/**
 * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
 */
package com.jeeplus.modules.sg.managementcenter.activiti.mapper;

import com.jeeplus.core.persistence.BaseMapper;
import com.jeeplus.core.persistence.annotation.MyBatisMapper;
import com.jeeplus.modules.sg.managementcenter.activiti.entity.*;
import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
import com.jeeplus.modules.sg.managementcenter.project.entity.Project1;
import com.jeeplus.modules.sys.entity.Role;
import com.jeeplus.modules.sys.entity.User;
import org.apache.ibatis.annotations.Param;

import javax.print.attribute.standard.MediaSize;
import java.util.List;

/**
 * 施工交底MAPPER接口
 * @author
 * @version 2019-11-08
 */

@MyBatisMapper
public interface ConstructionMapper extends BaseMapper<Construction> {

    int newUpdate(Construction construction);

    User queryPerson(String loginName);

    /**
     * 根据登陆名查询角色
     * */
    List<String> nameFindOffice(String loginName);

    void newSave(Construction construction);

    //根据储备项目暂定名称修改项目状态
    void updateStatus(String reserveProjectName);

    //根据储备项目暂定名称修改项目状态-结束状态
    void updateEndStatus(String reserveProjectName);
    //updateEndStatus

    /**
     * 根据项目定义号修改项目的土建流程状态
     * */
    void updateAdvStatus(String id);

    /**
     * 根据流程定义修改项目关闭状态
     */
    void updateCloseStatus(String procInsId);

    //根据流程id查询项目的需求提出单位
    String demandUnit(String procInsId);

    /**
     * 修改交底结论
     */
    void replaceDisclose(List<Construction> constructionList);

    /**
     * 修改项目工程量信息
     * */
    void quantityInsert(List<Construction> constructionList);

    /**
     * 根据节点信息，登陆人信息获得所有流程定义号list，通过流程定义号查询所有项目信息
     * */
    List<Construction> findByProcInsId(List<Construction> constructionList);

    /**
     * 保存上传文件信息
     */
    void uploadSave(UploadImages uploadImages);

    /**
     * 上传文件数据
     */
    List<UploadImages> findUploadPage(UploadImages uploadImages);

    /**
     * 政处是否自己运行
     */
    void updateIfSelf(Construction construction);

    void updateIfBorrow(Construction construction);

    //根据流程定义号查询项目需求名称
    String idProjectName(@Param("procInsId") String procInsId);

    Project1 findNameByInsID(String procInsId);

    String idProjectName2(@Param("procInsId") String procInsId);

    //根据流程定义号查询项目需求名称
    String idProjectName3(@Param("procInsId") String procInsId);

    String idProjectName4(@Param("procInsId") String procInsId);

    /**通过流程定义号再不同的流程表中查询对应的储备项目名称，通过关联项目表获得项目定义号及项目名称，
     * @return  返回项目的信息list
     * @param project 流程定义号 */
    Project procInsIdAllName(Project project);

    /**通过储备项目名称，项目定义号，项目名称查询复合条件的流程定义号返回
     * @return  返回符合条件的procInsId
     * @param project 查询条件 */
    ReturnTodo findProcInsIDAll(Project project);

    List<String> insIdByName(String projectName);

    List<String> insIdByName2(String projectName);

    List<String> insIdByName3(String projectName);

    List<String> insIdByName4(String projectName);

    List<Construction> findDisclosePage(Construction construction);

    //根据用户名查询角色
    List<Role> roleListByName(String name);

    void updateOIPI(Construction construction);

    /**
     * 土建工程量信息列表
     */
    List<EngineeringAmount> engineeringTable(EngineeringAmount engineeringAmount);

    /**
     * 其它工程量信息列表
     */
    List<OtherAmount> otherTable(OtherAmount otherAmount);

    /**
     * 土建工程量修改
     * */
    void EngAmountSave(EngineeringAmount engineeringAmount);

    /**
     * 其它工程量修改
     * */
    void addOther(OtherAmount otherAmount);

    /**
     * 根据id查找土建工程量信息
     */
    EngineeringAmount getEngAmount(EngineeringAmount engineeringAmount);

    /**
     * 根据id查找其它工程量信息
     */
    OtherAmount getOtherAmount(OtherAmount otherAmount);

    /**
     * 删除土建工程量信息
     */
    void delEngAmount(String id);

    /**
     * 删除其它工程量信息
     */
    void delOtherAmount(String id);

    /**
     *根据项目名称修改项目政策处理状态
     * */
    void updatePolicyStatus(@Param("reserveProjectName") String reserveProjectName,@Param("policyStatus") String policyStatus);

    /**
     * 通过流程定义号，删除本次领料流程中所有的领料单2020-09-23
     */
    void delProcessList(String procInsId);
}