package com.jojubanking.boot.module.system.job;

import com.jojubanking.boot.framework.quartz.core.handler.JobHandler;
import com.jojubanking.boot.module.system.controller.admin.item.vo.ItemExportReqVO;
import com.jojubanking.boot.module.system.controller.app.xytjinfo.vo.ItemListReqVO;
import com.jojubanking.boot.module.system.dal.dataobject.childitem.ChilditemDO;
import com.jojubanking.boot.module.system.dal.dataobject.item.ItemDO;
import com.jojubanking.boot.module.system.service.childitem.ChilditemService;
import com.jojubanking.boot.module.system.service.item.ItemService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Component
@Slf4j
public class UpdatePriceDaily implements JobHandler {
    @Resource
    private ItemService itemService;
    @Resource
    private ChilditemService childitemService;

    @Override
    public String execute(String param) throws Exception {

        //获取所有的基本体检项目itemno
       // 标识（1小项目 2临床 ），分开更新
        String itemnos = "";

        ItemListReqVO pageReqVO = new ItemListReqVO();
        pageReqVO.setPackageno("666");
        pageReqVO.setItemflag(1);
        List<ChilditemDO> listbase = childitemService.getSimpleItemList(pageReqVO);
        for(int i=0; i<listbase.size(); i++){
            //拼接参数
            itemnos = itemnos.concat("'");
            itemnos = itemnos.concat(listbase.get(i).getItemno());
            itemnos = itemnos.concat("'");

            if(i != listbase.size() -1 ){
                itemnos = itemnos.concat(",");
            }
        }

        List<Map<String, Object>> lstHisBase = new ArrayList<>();
        lstHisBase = itemService.getItemPricexxm(itemnos);

        //根据his的价格和名称重新更新表格
        for(int    i=0;    i<lstHisBase.size(); i++){
            Map<String, Object> ks = lstHisBase.get(i);
            String itemno = ks.get("id").toString();
            String itemname = ks.get("name").toString();
            String itemprice = ks.get("xmdj").toString();

            ItemDO itemDO = new ItemDO();
            DecimalFormat df = new DecimalFormat("#");
            Double number = Double.parseDouble(itemprice)*100;
            itemDO.setItemprice(df.format(number));
            //itemDO.setItemprice(itemprice);
            itemDO.setItemname(itemname);

            itemDO.setItemno(itemno);
            itemService.updateItemPriceByNo(itemDO);
        }

        itemnos = "";
        ItemListReqVO pageReqVO1 = new ItemListReqVO();
        pageReqVO1.setPackageno("666");
        pageReqVO1.setItemflag(2);
        List<ChilditemDO> listbase1 = childitemService.getSimpleItemList(pageReqVO1);
        for(int i=0; i<listbase1.size(); i++){
            //拼接参数
            itemnos = itemnos.concat("'");
            itemnos = itemnos.concat(listbase1.get(i).getItemno());
            itemnos = itemnos.concat("'");

            if(i != listbase1.size() -1 ){
                itemnos = itemnos.concat(",");
            }
        }

        List<Map<String, Object>> lstHisBase1 = new ArrayList<>();
        lstHisBase1 = itemService.getItemPriceLc(itemnos);

        //根据his的价格和名称重新更新表格
        for(int    i=0;    i<lstHisBase1.size(); i++){
            Map<String, Object> ks = lstHisBase1.get(i);
            String itemno = ks.get("id").toString();
            String itemname = ks.get("name").toString();
            String itemprice = ks.get("xmdj").toString();

            ItemDO itemDO = new ItemDO();
            DecimalFormat df = new DecimalFormat("#");
            Double number = Double.parseDouble(itemprice)*100;
            itemDO.setItemprice(df.format(number));
            //itemDO.setItemprice(itemprice);
            itemDO.setItemname(itemname);

            itemDO.setItemno(itemno);
            itemService.updateItemPriceByNo(itemDO);
        }

        //获取所有的可选体检项目itemno
        // 标识（1小项目 2临床 ），分开更新
        itemnos = "";
        ItemExportReqVO exportReqVO = new ItemExportReqVO();
        exportReqVO.setPackageno("0");
        exportReqVO.setItemflag(1);
        List<ItemDO> listKx = itemService.getItemList(exportReqVO);
        for(int j=0; j<listKx.size(); j++){
            itemnos = itemnos.concat("'");
            itemnos = itemnos.concat(listKx.get(j).getItemno());
            itemnos = itemnos.concat("'");

            if(j != listKx.size() -1 ){
                itemnos = itemnos.concat(",");
            }
        }

        List<Map<String, Object>> lstHisKx = new ArrayList<>();
        lstHisKx = itemService.getItemPricexxm(itemnos);

        //根据his的价格和名称重新更新表格
        for(int    i=0;    i<lstHisKx.size(); i++){
            Map<String, Object> ks = lstHisKx.get(i);
            String itemno = ks.get("id").toString();
            String itemname = ks.get("name").toString();
            String itemprice = ks.get("xmdj").toString();

            ItemDO itemDO = new ItemDO();
            DecimalFormat df = new DecimalFormat("#");
            Double number = Double.parseDouble(itemprice)*100;
            itemDO.setItemprice(df.format(number));
            //itemDO.setItemprice(itemprice);
            itemDO.setItemname(itemname);

            itemDO.setItemno(itemno);
            itemService.updateItemPriceByNo(itemDO);
        }

        //更新可选临床项目
        itemnos = "";
        ItemExportReqVO exportReqVO1 = new ItemExportReqVO();
        exportReqVO1.setPackageno("0");
        exportReqVO1.setItemflag(2);
        List<ItemDO> listKx1 = itemService.getItemList(exportReqVO1);
        for(int j=0; j<listKx1.size(); j++){
            itemnos = itemnos.concat("'");
            itemnos = itemnos.concat(listKx1.get(j).getItemno());
            itemnos = itemnos.concat("'");

            if(j != listKx1.size() -1 ){
                itemnos = itemnos.concat(",");
            }
        }

        List<Map<String, Object>> lstHisKx1 = new ArrayList<>();
        lstHisKx1 = itemService.getItemPriceLc(itemnos);

        //根据his的价格和名称重新更新表格
        for(int    i=0;    i<lstHisKx1.size(); i++){
            Map<String, Object> ks = lstHisKx1.get(i);
            String itemno = ks.get("id").toString();
            String itemname = ks.get("name").toString();
            String itemprice = ks.get("xmdj").toString();

            ItemDO itemDO = new ItemDO();
            DecimalFormat df = new DecimalFormat("#");
            Double number = Double.parseDouble(itemprice)*100;
            itemDO.setItemprice(df.format(number));
            //itemDO.setItemprice(itemprice);
            itemDO.setItemname(itemname);

            itemDO.setItemno(itemno);
            itemService.updateItemPriceByNo(itemDO);
        }

        return String.format("刷新体检项目价格");
    }


}
