4.25

第三个接口:  这个接口比较简单,要求输入两个参数:要展示过去多长时间和股票类型

难点:将输入的第一个参数 转化为两个时间点,即当前时刻和当前时刻的前多长时间时刻。也不难,在第二个接口都写好了,拿过来改巴改巴

 

需求:

以China为例:

package com.simnectzbank.lbs.processlayer.stock.service.command.impl;

import com.alibaba.fastjson.JSON;
import com.csi.sbs.common.business.constant.SuccessConstant;
import com.csi.sbs.common.business.model.HeaderModel;
import com.csi.sbs.common.business.util.ResponseUtil;
import com.csi.sbs.common.business.util.ResultUtil;
import com.simnectzbank.lbs.processlayer.stock.clientmodel.*;
import com.simnectzbank.lbs.processlayer.stock.component.LocaleMessage;
import com.simnectzbank.lbs.processlayer.stock.constant.ExceptionConstant;
import com.simnectzbank.lbs.processlayer.stock.constant.ResultConstant;
import com.simnectzbank.lbs.processlayer.stock.constant.SysConstant;
import com.simnectzbank.lbs.processlayer.stock.exception.RecordNotFoundException;
import com.simnectzbank.lbs.processlayer.stock.service.command.Command;
import com.simnectzbank.lbs.processlayer.stock.service.proxy.stockinfoservice.StockInfoService;
import com.simnectzbank.lbs.processlayer.stock.service.proxy.sysadminservice.SysTransactionLogService;
import com.simnectzbank.lbs.processlayer.stock.util.DateToStamp;
import com.simnectzbank.lbs.processlayer.stock.util.IOperationLogUtil;
import com.simnectzbank.lbs.processlayer.stock.util.IRSendLogUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.text.ParseException;
import java.util.*;

@Component
public class StockDateByChinaCommandImpl extends Command {

    @Resource
    private LocaleMessage localeMessage;

    @Resource
    private IRSendLogUtil logUtil;

    @Autowired
    private SysTransactionLogService sysTransactionLogService;

    @Resource
    private StockInfoService stockInfoService;

    @Resource
    private IOperationLogUtil operationLogUtil;

    private String classname = StockDateByChinaCommandImpl.class.getName();


    @Override
    public void initialize(BusinessModel model, Map<String, Object> context) throws Exception {
        // debug log
        String method = "stockDateByChina-initialize";
        long threadId = Thread.currentThread().getId();
        HeaderModel header = model.getHeaderModel();
        logUtil.sendDebug(new Date().getTime() + "|" + threadId + "|" + SysConstant.SEND_DEBUG_HEADER + header.toString() + "|" + classname + "|" + method + SysConstant.SEND_DEBUG_METHOD_START);

        // Operation Log
        operationLogUtil.log(
                localeMessage.getMessage(ResultConstant.GET_STOCK_LIST),
                SysConstant.OPERATION_START,
                localeMessage.getMessage(ResultConstant.GET_STOCK_LIST),
                SysConstant.LOCAL_SERVICE_NAME,
                (String) context.get(SysConstant.TRANSACTION_ID),
                header);

        logUtil.sendDebug(new Date().getTime() + "|" + threadId + "|" + SysConstant.SEND_DEBUG_HEADER + header.toString() + "|" + classname + "|" + method + SysConstant.SEND_ERROR_LOG_METHOD_END);

    }

    @Override
    public ResultUtil execute(BusinessModel model) throws RecordNotFoundException, ParseException {
        String method = "stockDateByChina-execute";
        long threadId = Thread.currentThread().getId();
        logUtil.sendDebug(new Date().getTime() + "|" + threadId + "|" + classname + "|" + method  + SysConstant.SEND_DEBUG_METHOD_START);

        ResultUtil result = null;
        StockDateIndexModel stockDateIndexModel = (StockDateIndexModel) model.getTransctionModel();
        GetStockDateIndexModel getStockDateIndexModel = new GetStockDateIndexModel();
        getStockDateIndexModel.setType(stockDateIndexModel.getType());

        //获取当前时间的前 1day,1week,2weeks,1month,2months,3months,6months,9months,12months
        Map<String, String> timeMap = DateToStamp.timeSpan(stockDateIndexModel.getSelectDate());

        Map< String, String> checkMap = new HashMap<>();
        checkMap.put("1day","1day");
        checkMap.put("1week","1week");
        checkMap.put("2weeks","2weeks");
        checkMap.put("1month","1month");
        checkMap.put("2months","2months");
        checkMap.put("3months","3months");
        checkMap.put("6months","6months");
        checkMap.put("9months","9months");
        checkMap.put("12months","12months");

        if(!checkMap.containsKey(stockDateIndexModel.getSelectDate())){
            throw new RecordNotFoundException(localeMessage.getMessage(ResultConstant.INPUT_ERROR), ExceptionConstant.INVALID_PARAMETER_ERROR);
        }

        if(stockDateIndexModel.getSelectDate().equals("1day")){
            getStockDateIndexModel.setFromDate(timeMap.get("s1day"));
            getStockDateIndexModel.setToDate(timeMap.get("s0"));
            getStockDateIndexModel.setSelectDate(timeMap.get("s0"));//获取一下值,不参与逻辑
        }else if(stockDateIndexModel.getSelectDate().equals("1week")){
            getStockDateIndexModel.setFromDate(timeMap.get("s1week"));
            getStockDateIndexModel.setToDate(timeMap.get("s0"));
            getStockDateIndexModel.setSelectDate(timeMap.get("s0"));
        }else if(stockDateIndexModel.getSelectDate().equals("2weeks")){
            getStockDateIndexModel.setFromDate(timeMap.get("s2weeks"));
            getStockDateIndexModel.setToDate(timeMap.get("s0"));
            getStockDateIndexModel.setSelectDate(timeMap.get("s0"));
        }else if(stockDateIndexModel.getSelectDate().equals("1month")){
            getStockDateIndexModel.setFromDate(timeMap.get("s1month"));
            getStockDateIndexModel.setToDate(timeMap.get("s0"));
            getStockDateIndexModel.setSelectDate(timeMap.get("s0"));
        }else if(stockDateIndexModel.getSelectDate().equals("2months")){
            getStockDateIndexModel.setFromDate(timeMap.get("s2months"));
            getStockDateIndexModel.setToDate(timeMap.get("s0"));
            getStockDateIndexModel.setSelectDate(timeMap.get("s0"));
        }else if(stockDateIndexModel.getSelectDate().equals("3months")){
            getStockDateIndexModel.setFromDate(timeMap.get("s3months"));
            getStockDateIndexModel.setToDate(timeMap.get("s0"));
            getStockDateIndexModel.setSelectDate(timeMap.get("s0"));
        }else if(stockDateIndexModel.getSelectDate().equals("6months")){
            getStockDateIndexModel.setFromDate(timeMap.get("s6months"));
            getStockDateIndexModel.setToDate(timeMap.get("s0"));
            getStockDateIndexModel.setSelectDate(timeMap.get("s0"));
        }else if(stockDateIndexModel.getSelectDate().equals("9months")){
            getStockDateIndexModel.setFromDate(timeMap.get("s9months"));
            getStockDateIndexModel.setToDate(timeMap.get("s0"));
            getStockDateIndexModel.setSelectDate(timeMap.get("s0"));
        }else if(stockDateIndexModel.getSelectDate().equals("12months")){
            getStockDateIndexModel.setFromDate(timeMap.get("s12months"));
            getStockDateIndexModel.setToDate(timeMap.get("s0"));
            getStockDateIndexModel.setSelectDate(timeMap.get("s0"));
        }else{
            getStockDateIndexModel.setFromDate(timeMap.get("sNull"));
            getStockDateIndexModel.setToDate(timeMap.get("s0"));
            getStockDateIndexModel.setSelectDate(timeMap.get("s0"));
        }

        ResultUtil stockResult = stockInfoService.findManyDateByChina(getStockDateIndexModel);
        List<StockDateIndexHistoryModel> list = JSON.parseArray((String) stockResult.getData(), StockDateIndexHistoryModel.class);
        if(list == null || list.size() == 0){
            throw new RecordNotFoundException(localeMessage.getMessage(ResultConstant.RECORD_NOTFOUND), ExceptionConstant.ERROR_CODE404010);
        }else{
            result = ResponseUtil.success(SuccessConstant.SUCCESS_CODE200, list , localeMessage.getMessage(ResultConstant.SUCCESS_MSG));
        }

        logUtil.sendDebug(new Date().getTime() +"|" + threadId + "|" + classname + "|" + method  +  SysConstant.SEND_ERROR_LOG_METHOD_END );
        return result;
    }



    @Override
    public void finalize(BusinessModel model, Map<String, Object> context) throws Exception {
        // debug log
        String method = "stockDateByChina-finalize";
        long threadId = Thread.currentThread().getId();
        HeaderModel header = model.getHeaderModel();
        logUtil.sendDebug(new Date().getTime() + "|" + threadId + "|" + SysConstant.SEND_DEBUG_HEADER + header.toString() + "|" + classname + "|" + method + SysConstant.SEND_DEBUG_METHOD_START);

        boolean flag = (boolean) context.get(SysConstant.LOGICFLAG);
        // Operation Log
        operationLogUtil.log(
                localeMessage.getMessage(ResultConstant.GET_STOCK_LIST),
                flag? SysConstant.OPERATION_SUCCESS:SysConstant.OPERATION_ERROR,
                localeMessage.getMessage(ResultConstant.GET_STOCK_LIST),
                SysConstant.LOCAL_SERVICE_NAME,
                (String) context.get(SysConstant.TRANSACTION_ID),
                header);

        logUtil.sendDebug(new Date().getTime() + "|" + threadId + "|" + SysConstant.SEND_DEBUG_HEADER + header.toString() + "|" + classname + "|" + method + SysConstant.SEND_ERROR_LOG_METHOD_END);

    }
}

 

时间转换方法:

//接口三:获取当前时间的前 1day,1week,2weeks,1month,2months,3months,6months,9months,12months

    public static Map<String,String> timeSpan(String span) throws ParseException {
        String s0 ="";
        String s1day ="";
        String s1week ="";
        String s2weeks ="";
        String s1month ="";
        String s2months ="";
        String s3months ="";
        String s6months ="";
        String s9months ="";
        String s12months ="";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        if(span.equals("1week")){
            Date sd00 = new Date();//当前时间
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sd00);
            c1.add(Calendar.DATE, -8);//一周内的数据,因为sql没写=
            c2.setTime(sd00);
            s1week = sdf.format(c1.getTime());
            s0 = sdf.format(c2.getTime());

            s0 = date2Stamp(s0);//转成时间戳
            s1week = date2Stamp(s1week);//转成时间戳 当前时间前7天

            Map<String,String> map = new HashMap<String, String>();
            map.put("s0",s0);
            map.put("s1week",s1week);
            return map;
        }else if(span.equals("1day")){
            Date sd00 = new Date();//当前时间
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sd00);
            c1.add(Calendar.DATE, -2);
            c2.setTime(sd00);
            s1day = sdf.format(c1.getTime());
            s0 = sdf.format(c2.getTime());

            s0 = date2Stamp(s0);//转成时间戳
            s1day = date2Stamp(s1day);//转成时间戳 当前时间前1天

            Map<String,String> map = new HashMap<String, String>();
            map.put("s0",s0);
            map.put("s1day",s1day);
            return map;
        }else if(span.equals("2weeks")){
            Date sd00 = new Date();//当前时间
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sd00);
            c1.add(Calendar.DATE, -15);
            c2.setTime(sd00);
            s2weeks = sdf.format(c1.getTime());
            s0 = sdf.format(c2.getTime());

            s0 = date2Stamp(s0);//转成时间戳
            s2weeks = date2Stamp(s2weeks);//转成时间戳 当前时间前14天

            Map<String,String> map = new HashMap<String, String>();
            map.put("s0",s0);
            map.put("s2weeks",s2weeks);
            return map;
        }else if(span.equals("1month")){
            Date sd00 = new Date();//当前时间
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sd00);
            c1.add(Calendar.MONTH, -1);
            c1.add(Calendar.DATE, -1);//减一天
            c2.setTime(sd00);
            s1month = sdf.format(c1.getTime());
            s0 = sdf.format(c2.getTime());

            s0 = date2Stamp(s0);//转成时间戳
            s1month = date2Stamp(s1month);//转成时间戳

            Map<String,String> map = new HashMap<String, String>();
            map.put("s0",s0);
            map.put("s1month",s1month);
            return map;
        }else if(span.equals("2months")){
            Date sd00 = new Date();//当前时间
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sd00);
            c1.add(Calendar.MONTH, -2);
            c1.add(Calendar.DATE, -1);//减一天
            c2.setTime(sd00);
            s2months = sdf.format(c1.getTime());
            s0 = sdf.format(c2.getTime());

            s0 = date2Stamp(s0);//转成时间戳
            s2months = date2Stamp(s2months);//转成时间戳

            Map<String,String> map = new HashMap<String, String>();
            map.put("s0",s0);
            map.put("s2months",s2months);
            return map;
        }else if(span.equals("3months")){
            Date sd00 = new Date();//当前时间
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sd00);
            c1.add(Calendar.MONTH, -3);
            c1.add(Calendar.DATE, -1);//减一天
            c2.setTime(sd00);
            s3months = sdf.format(c1.getTime());
            s0 = sdf.format(c2.getTime());

            s0 = date2Stamp(s0);//转成时间戳
            s3months = date2Stamp(s3months);//转成时间戳

            Map<String,String> map = new HashMap<String, String>();
            map.put("s0",s0);
            map.put("s3months",s3months);
            return map;
        }else if(span.equals("6months")){
            Date sd00 = new Date();//当前时间
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sd00);
            c1.add(Calendar.MONTH, -6);
            c1.add(Calendar.DATE, -1);//减一天
            c2.setTime(sd00);
            s6months = sdf.format(c1.getTime());
            s0 = sdf.format(c2.getTime());

            s0 = date2Stamp(s0);//转成时间戳
            s6months = date2Stamp(s6months);//转成时间戳

            Map<String,String> map = new HashMap<String, String>();
            map.put("s0",s0);
            map.put("s6months",s6months);
            return map;
        }else if(span.equals("9months")){
            Date sd00 = new Date();//当前时间
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sd00);
            c1.add(Calendar.MONTH, -9);
            c1.add(Calendar.DATE, -1);//减一天
            c2.setTime(sd00);
            s9months = sdf.format(c1.getTime());
            s0 = sdf.format(c2.getTime());

            s0 = date2Stamp(s0);//转成时间戳
            s9months = date2Stamp(s9months);//转成时间戳

            Map<String,String> map = new HashMap<String, String>();
            map.put("s0",s0);
            map.put("s9months",s9months);
            return map;
        }else if(span.equals("12months")){
            Date sd00 = new Date();//当前时间
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sd00);
            c1.add(Calendar.YEAR, -1);
            c1.add(Calendar.DATE, -1);//减一天
            c2.setTime(sd00);
            s12months = sdf.format(c1.getTime());
            s0 = sdf.format(c2.getTime());

            s0 = date2Stamp(s0);//转成时间戳
            s12months = date2Stamp(s12months);//转成时间戳

            Map<String,String> map = new HashMap<String, String>();
            map.put("s0",s0);
            map.put("s12months",s12months);
            return map;
        }else{//为空
            Map<String,String> map = new HashMap<String, String>();
            map.put("s0",span);
            map.put("sNull",span);
            return map;
        }
    }

给大哥汇报完,唉,还要改:(小问题小问题)

1.严格分成五个api,第一层第二层都要五个

2.日期不要最新的当前日期,而是要数据库中有的最新的!!

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值