package com.zhyc.module.biosafety.service.impl;

import java.util.List;
import com.zhyc.common.utils.DateUtils;
import com.zhyc.common.utils.SecurityUtils;
import com.zhyc.module.biosafety.domain.SwPresDetail;
import com.zhyc.module.biosafety.domain.SwPrescription;
import com.zhyc.module.biosafety.mapper.SwPrescriptionMapper;
import com.zhyc.module.biosafety.service.ISwPrescriptionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.zhyc.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;

/**
 * 处方Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-07-11
 */
@Service
public class SwPrescriptionServiceImpl implements ISwPrescriptionService
{
    @Autowired
    private SwPrescriptionMapper swPrescriptionMapper;

    /**
     * 查询处方
     * 
     * @param id 处方主键
     * @return 处方
     */
    @Override
    public SwPrescription selectSwPrescriptionById(Long id)
    {
        return swPrescriptionMapper.selectSwPrescriptionById(id);
    }

    /**
     * 查询处方列表
     * 
     * @param swPrescription 处方
     * @return 处方
     */
    @Override
    public List<SwPrescription> selectSwPrescriptionList(SwPrescription swPrescription)
    {
        return swPrescriptionMapper.selectSwPrescriptionList(swPrescription);
    }

    /**
     * 新增处方
     * 
     * @param swPrescription 处方
     * @return 结果
     */
    @Transactional
    @Override
    public int insertSwPrescription(SwPrescription swPrescription)
    {
//        获取创建人的用户名称
        String username = SecurityUtils.getLoginUser().getUser().getNickName();
        swPrescription.setCreateBy(username);
        swPrescription.setCreateTime(DateUtils.getNowDate());
        int rows = swPrescriptionMapper.insertSwPrescription(swPrescription);
        insertSwPresDetail(swPrescription);
        return rows;
    }

    /**
     * 修改处方
     * 
     * @param swPrescription 处方
     * @return 结果
     */
    @Transactional
    @Override
    public int updateSwPrescription(SwPrescription swPrescription)
    {
        String username = SecurityUtils.getLoginUser().getUser().getNickName();
        swPrescription.setUpdateBy(username);
        swPrescription.setUpdateTime(DateUtils.getNowDate());
        swPrescriptionMapper.deleteSwPresDetailByPersId(swPrescription.getId());
        insertSwPresDetail(swPrescription);
        return swPrescriptionMapper.updateSwPrescription(swPrescription);
    }

    /**
     * 批量删除处方
     * 
     * @param ids 需要删除的处方主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteSwPrescriptionByIds(Long[] ids)
    {
        swPrescriptionMapper.deleteSwPresDetailByPersIds(ids);
        return swPrescriptionMapper.deleteSwPrescriptionByIds(ids);
    }

    /**
     * 删除处方信息
     * 
     * @param id 处方主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteSwPrescriptionById(Long id)
    {
        swPrescriptionMapper.deleteSwPresDetailByPersId(id);
        return swPrescriptionMapper.deleteSwPrescriptionById(id);
    }

    /**
     * 新增处方详情信息
     * 
     * @param swPrescription 处方对象
     */
    public void insertSwPresDetail(SwPrescription swPrescription)
    {
        List<SwPresDetail> swPresDetailList = swPrescription.getSwPresDetailList();
        Long id = swPrescription.getId();
        if (StringUtils.isNotNull(swPresDetailList))
        {
            List<SwPresDetail> list = new ArrayList<SwPresDetail>();
            for (SwPresDetail swPresDetail : swPresDetailList)
            {
                swPresDetail.setPersId(id);
                list.add(swPresDetail);
            }
            if (list.size() > 0)
            {
                swPrescriptionMapper.batchSwPresDetail(list);
            }
        }
    }
}
