package cn.ezhizao.framework.task;

import cn.ezhizao.common.utils.StringUtils;
import cn.ezhizao.framework.qrCode.QrCodeService;
import cn.ezhizao.project.business.domain.BizStorageCode;
import cn.ezhizao.project.business.domain.BizTransferCode;
import cn.ezhizao.project.business.service.IBizStorageCodeService;
import cn.ezhizao.project.business.service.IBizTransferCodeService;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * 定时任务调度测试
 *
 * @author ruoyi
 */
@Component("ryTask")
public class RyTask
{
    @Value("${file.upload.path}")
    private String uploadPath;
    @Resource
    private IBizStorageCodeService bizStorageCodeService;
    @Resource
    private IBizTransferCodeService bizTransferCodeService;
    @Resource
    QrCodeService qrCodeService;

    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
    {
        System.out.println(StringUtils.format("执行多参方法： 字符串类型{}，布尔类型{}，长整型{}，浮点型{}，整形{}", s, b, l, d, i));
    }

    public void ryParams(String params)
    {
        System.out.println("执行有参方法：" + params);
    }

    public void ryNoParams()
    {
        System.out.println("执行无参方法");
    }


//    @Resource
//    IBizMessageService messageService;
//    public void checkMessage() throws IOException {
//        List<BizMessage> messages = messageService.query().eq("msg_read", 0).list();
//        Map<Long, List<BizMessage>> groupById = messages.stream().collect(Collectors.groupingBy(BizMessage::getToUserId, Collectors.toList()));
//        for (Map.Entry<Long, List<BizMessage>> entry : groupById.entrySet()) {
//            WebSocketUser.sendInfo(String.valueOf(entry.getValue().size()), String.valueOf(entry.getKey()));
//        }
//        WebSocketUser.sendEmptyMessage(messages.stream().map(BizMessage::getToUserId).collect(Collectors.toList()));
//    }
    /**
     * 新生成二维码方法，只生成箱号字符串
     */
public <T> void GenerateQcCode(T t) throws JsonProcessingException {
    String className = t.getClass().getName();
    String path;
    switch (className) {
        case "cn.ezhizao.project.business.domain.BizStorageCode":

            BizStorageCode code = (BizStorageCode) t;
            // 定义二维码图片的存储路径
            String storageCode = code.getCode(); // 假设您仍然需要使用更新storageCode对象的qcCode属性的code
            path = uploadPath + "qcCode/storageCode/" + storageCode + ".png";

            // 更新storageCode对象的qcCode属性
            code.setQcCode("/profile/upload/qcCode/storageCode/" + storageCode + ".png");

            // 直接使用字符串生成二维码并保存到文件
            // 假设createNewCodeToFile方法可以接受一个字符串参数
            qrCodeService.createNewStorageCodeToFile(storageCode, path, storageCode);
            bizStorageCodeService.updateById(code);
            break;
        case "cn.ezhizao.project.business.domain.BizTransferCode":

            BizTransferCode tranCode = (BizTransferCode) t;
            // 定义二维码图片的存储路径
            String transferCode = tranCode.getCode(); // 假设您仍然需要使用更新transferCode对象的qcCode属性的code
            path = uploadPath + "qcCode/transferCode/" + transferCode + ".png";

            // 更新transferCode对象的qcCode属性
            tranCode.setQcCode("/profile/upload/qcCode/transferCode/" + transferCode + ".png");

            // 直接使用字符串生成二维码并保存到文件
            // 假设createNewCodeToFile方法可以接受一个字符串参数
            qrCodeService.createNewTransferCodeToFile(transferCode, path, transferCode);
            bizTransferCodeService.updateById(tranCode);
            break;
        default:
            break;
    }
}
}
