package com.sy.coinage.workshop.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sy.coinage.core.vo.CacheUserVO;
import com.sy.coinage.workshop.model.*;
import com.sy.coinage.workshop.req.*;
import com.sy.coinage.workshop.vo.*;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;

/**
 * -IService
 */
public interface IWorkshopAccountService extends IService<WorkshopAccount> {
    /**
     * @param redFlashFlag 1:普通 2:红冲数据（抽检、返检）
     * @param deptId
     * @param dept
     * @param operatorId
     * @param operator
     * @param checkId
     * @param checker
     * @param orderNo
     * @param piecesTotal  总枚数
     * @param total        结存:实时实际库存数量（每笔需要进行增减计算）
     * @param statType     统计台账类型：1.实物收发卡 2.封箱成品实物收发卡(车间) 3.剔除品实物收发卡(车间) 4.印花成品出入库台账 5.封箱成品出入库台账
     * @param type         1内部 2外部
     * @param digest
     * @param wareId
     */
    void shopOut(Integer redFlashFlag, Integer deptId, String dept, Integer operatorId,
        String operator,
        Integer checkId, String checker, String orderNo, Integer piecesTotal, Integer total,
        Integer statType, Integer type, String digest, Integer wareId, Integer securitiesId,
        String securities);

    /**
     * @param redFlashFlag 1:普通 2:红冲数据（抽检、返检）
     * @param deptId
     * @param dept
     * @param operatorId
     * @param operator
     * @param checkId
     * @param checker
     * @param orderNo
     * @param piecesTotal  总枚数
     * @param total
     * @param statType     统计台账类型：1.实物收发卡 2.封箱成品实物收发卡(车间) 3.剔除品实物收发卡(车间) 4.印花成品出入库台账 5.封箱成品出入库台账
     * @param type         1内部 2外部
     * @param digest
     * @param wareId
     */
    void shopIn(Integer redFlashFlag, Integer deptId, String dept,
                Integer operatorId, String operator,
                Integer checkId, String checker, String orderNo, Integer piecesTotal, Integer total,
                Integer statType, Integer type, String digest, Integer wareId, Integer securitiesId,
                String securities);

    void createAccount(Date d, CacheUserVO user);

    Integer getLastInventory(Integer securitiesId, Integer deptId);
}
