QuotaPastBiz.java 5.51 KB
package com.cjs.cms.biz.quota;

import java.io.File;
import java.net.URI;
import java.util.List;
import java.util.Map;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.cjs.cms.action.user.fund.UserBalanceAction;
import com.cjs.cms.dao.quota.OtcHolderDao;
import com.cjs.cms.dao.quota.OtcStockRealDao;
import com.cjs.cms.dao.quota.QuotaConfigDao;
import com.cjs.cms.dao.quota.QuotaPastDao;
import com.cjs.cms.dao.quota.QuotaUserDao;
import com.cjs.cms.dao.quota.QuotaUserRecordDao;
import com.cjs.cms.model.quota.OtcStockRealInfo;
import com.cjs.cms.model.quota.QuotaConfigInfo;
import com.cjs.cms.model.quota.QuotaPastInfo;
import com.cjs.cms.model.quota.QuotaUserInfo;
import com.cjs.cms.model.quota.QuotaUserRecordInfo;
import com.cjs.cms.model.user.UserInfo;
import com.cjs.cms.util.file.FileUtil;
import com.cjs.cms.util.lang.DateEnum;
import com.cjs.cms.util.lang.DateUtil;
import com.cjs.cms.util.poi.ExcelConfig;
import com.cjs.cms.util.poi.ExcelUtil;
import com.cjs.cms.util.web.ActionUtil;

/**
 * 清除过期额度和持仓
 * @author 安逸
 *
 */
@Service
public class QuotaPastBiz {
    @Value("${download.export}")
    private String             exportPath;
    @Autowired
    private QuotaConfigDao     quotaConfig;
    @Autowired
    private OtcStockRealDao    otcStockRealDao;
    @Autowired
    private OtcHolderDao       otcHolderDao;
    @Autowired
    private QuotaPastDao       quotaPastDao;
    @Autowired
    private QuotaUserDao       quotaUserDao;
    @Autowired
    private QuotaUserRecordDao quotaUserRecordDao;
    Logger                     log = LogManager.getLogger();

    /**
     * 清除过期额度
     */
    @Transactional
    public void toCancleQuota(Map<String, Object> params) {
        UserInfo userInfo = ActionUtil.getUser();
        List<QuotaConfigInfo> quotaPast = quotaConfig.queryQuotaPast();
        for (QuotaConfigInfo quotaConfigInfo : quotaPast) {
            List<QuotaUserInfo> quotaUserInfo = quotaUserDao
                .queryQuotaByotcCode(quotaConfigInfo.getOtcCode());
            for (QuotaUserInfo quInfo : quotaUserInfo) {
                //发生额度
                int quota = quInfo.getQuota();
                //托管额度变更记录
                QuotaUserRecordInfo recored = new QuotaUserRecordInfo();
                recored.setUserId(quInfo.getUserId());
                recored.setOtcCode(quInfo.getOtcCode());
                recored.setOtcName(quInfo.getOtcName());
                recored.setQuota(-quota);
                recored.setPostQuota(0);
                recored.setSource(10);
                recored.setCreateBy(userInfo.getTruename());
                quotaUserRecordDao.insert(recored);
            }
            //清空额度
            quotaConfig.updateCanceledQuota(quotaConfigInfo.getId());
            params.put("otcCode", quotaConfigInfo.getOtcCode());
            quotaUserDao.emptyQuota(params);
        }
    }

    /**
     * 记录过期持仓到过期持仓记录表
     */

    public void toAddQuotaPast() {
        //已过期额度的藏品
        List<QuotaConfigInfo> quotaConfiges = quotaConfig.queryPositionPast();

        for (QuotaConfigInfo quotaConfigInfo : quotaConfiges) {
            //用户已过期的持仓
            List<OtcStockRealInfo> otcStock = otcStockRealDao.search(quotaConfigInfo.getOtcCode());
            for (OtcStockRealInfo otcStockRealInfo : otcStock) {
                //加入已过期持仓记录表
                QuotaPastInfo quotaPast = new QuotaPastInfo();
                quotaPast.setOtcCode(otcStockRealInfo.getOtcCode());
                String otcAccount = otcHolderDao.queryOtcAccount(otcStockRealInfo.getFundAccount());
                quotaPast.setOtcAccount(otcAccount);
                quotaPast.setOtcName(otcStockRealInfo.getOtcName());
                quotaPast.setUserId(otcStockRealInfo.getFundAccount());
                quotaPast.setTradeEndDate(quotaConfigInfo.getTradeEndDate());
                quotaPast.setEnableAmount(otcStockRealInfo.getEnableAmount());
                quotaPastDao.addQuotaPast(quotaPast);
            }

            quotaConfig.updateCanceledPosition(quotaConfigInfo.getId());
        }
    }

    /**
     * 生成excel表,清除持仓
     */
    @Transactional
    public File export(Map<String, Object> params) throws Exception {
        String filename = "待清除过期持仓文件_" + DateUtil.getNow(DateEnum.UNSIGNED_DATE_TIME);
        filename = FileUtil.makeMonthDir(exportPath) + filename + ".xlsx";
        File targetFile = new File(filename);
        ExcelConfig config = new ExcelConfig();
        URI template = UserBalanceAction.class.getResource("/excel/quota_past.xlsx").toURI();
        List<Map<String, Object>> list = quotaPastDao.search(params);

        for (Map<String, Object> map : list) {
            map.put("market", "O1");
            map.put("non_circulation", "0");
            map.put("manage_type", "0");
            map.put("enable_amount", "-" + (map.get("enable_amount")));
        }

        //改变已导出的持仓状态
        quotaPastDao.updateStatus(params);

        // 先生成Excel文件
        config.setSourceTemplate(new File(template));
        config.setTargetFile(targetFile);
        config.setData(list);
        new ExcelUtil(config).writeExcel();
        return targetFile;
    }

}