package com.persagy.server.controllers.rel

import com.persagy.server.datacenter.models.entities.rel.REqForSh
import com.persagy.server.datacenter.models.entities.rel.REqForShList
import com.persagy.server.datacenter.models.entities.rel.RShForEqList
import com.persagy.server.services.rel.REqForShService
import com.persagy.base.extensions.toJson
import com.persagy.service.models.responses.SBaseResponse
import com.persagy.service.models.responses.SCreateResponse
import io.swagger.annotations.Api
import io.swagger.annotations.ApiOperation
import org.slf4j.LoggerFactory
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

/**
 * 设备服务于竖井
 *
 * @author 付国宝
 */
@Api(tags = ["038、关系-设备服务于竖井"])
@RestController
@RequestMapping("/rel/eq-for-sh")
class REqForShController {

    companion object {
        /** 日志 */
        private val logger = LoggerFactory.getLogger(REqForShController::class.java)
    } // Companion object

    /**
     * 创建设备服务于竖井关系
     *
     * @param    rEqForSh    设备和竖井的关系对象
     * @return               创建的结果信息
     */
    @ApiOperation(value = "创建设备服务于竖井关系", notes = "必填项：EquipId（设备id）、ShaftId（竖井id）")
    @PostMapping(value = ["/link"])
    fun create(@RequestBody rEqForSh: REqForSh): SCreateResponse<REqForSh>{
        logger.debug("shaft = ${rEqForSh.toJson()}")
        return REqForShService.create(rEqForSh)
    } // Function create()

    /**
     * 根据对象删除关系
     *
     * @param    rEqForSh     对象
     * @return                删除的结果信息
     */
    @ApiOperation(value = "根据对象删除设备服务于竖井关系，只针对一个对象", notes = "必填项：EquipId（设备id）、shaftId（竖井id）")
    @PostMapping(value = ["/unlink"])
    fun delete(@RequestBody rEqForSh: REqForSh): SBaseResponse{
        return REqForShService.deletes(rEqForSh)
    } // Function delete()

    /**
     * 创建设备服务于竖井关系
     *
     * @param    rEqForSh    设备和竖井的关系对象
     * @return               创建的结果信息
     */
    @ApiOperation(value = "设备服务于竖井，设备一对多", notes = "必填项：ShaftIdList（竖井id列表）、EquipId（设备id）,测方法会覆盖以前的记录")
    @PostMapping(value = ["/link-sh"])
    fun createSh(@RequestBody rEqForSh: REqForShList): SCreateResponse<REqForSh>{
        logger.debug("shaft = ${rEqForSh.toJson()}")
        return REqForShService.createEq(rEqForSh)
    } // Function createSh()

    /**
     * 创建服务于竖井的设备关系
     *
     * @param    rEqForSh    设备和竖井的关系对象
     * @return               创建的结果信息
     */
    @ApiOperation(value = "服务于竖井的设备，竖井一对多", notes = "必填项：ShaftId（竖井id）、EquipIdList（设备id列表）,测方法会覆盖以前的记录")
    @PostMapping(value = ["/link-eq"])
    fun createEq(@RequestBody rEqForSh: RShForEqList): SCreateResponse<REqForSh>{
        logger.debug("shaft = ${rEqForSh.toJson()}")
        return REqForShService.createsSh(rEqForSh)
    } // Function createEq()

} // Class REqForShController