package com.persagy.server.controllers.rel

import com.persagy.server.datacenter.models.entities.rel.REqInSh
import com.persagy.server.datacenter.models.entities.rel.REqInShList
import com.persagy.server.datacenter.models.entities.rel.RShInEqList
import com.persagy.server.services.rel.REqInShService
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 = ["020、关系-设备所在竖井"])
@RestController
@RequestMapping("/rel/eq-in-sh")
class REqInShController {

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

    /**
     * 创建设备所在竖井关系
     *
     * @param    rEqInSh    设备和竖井的关系对象
     * @return              创建的结果信息
     */
    @ApiOperation(value = "创建设备所在竖井关系，累计添加不会覆盖以前记录", notes = "必填项：EquipId（设备id）、ShaftId（竖井id）")
    @PostMapping(value = ["/link"])
    fun create(@RequestBody rEqInSh: REqInSh): SCreateResponse<REqInSh>{
        logger.debug("shaft = ${rEqInSh.toJson()}")
        return REqInShService.create(rEqInSh)
    } //Function create()

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

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

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

    /**
     * 创建所在竖井的设备关系
     *
     * @param    rEqInSh      设备和竖井的关系对象
     * @return                创建的结果信息
     */
    @ApiOperation(value = "设备所在的竖井，竖井一对多，此方不会覆盖以前的记录，累计添加", notes = "必填项：EquipIdList（设备id列表）、ShaftId（竖井id）")
    @PostMapping(value = ["/link-eq-sh"])
    fun createEqSh(@RequestBody rEqInSh: RShInEqList): SCreateResponse<REqInSh>{
        logger.debug("shaft = ${rEqInSh.toJson()}")
        return  REqInShService.createsShEq(rEqInSh)
    } // Function createEq()

} // Class REqInShController