package com.product.administration.service;

import com.product.administration.config.CmnConst;
import com.product.administration.service.ide.IClaimExpenseService;
import com.product.common.lang.StringUtils;
import com.product.core.dao.BaseDao;
import com.product.core.entity.DataTableEntity;
import com.product.core.entity.FieldSetEntity;
import com.product.core.exception.BaseException;
import com.product.core.permission.PermissionService;
import com.product.core.service.support.AbstractBaseService;
import com.product.core.service.support.QueryFilterService;
import com.product.core.spring.context.SpringMVCContextHolder;
import com.product.core.transfer.Transactional;

import java.util.Date;

import com.product.util.BaseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
 * Copyright  漏 LX-BASE
 * @Title: ClaimExpenseService
 * @Project: LX-BASE-SERVER
 * @Date: 2021-06-01 10:27:35
 * @Author: Xin.Luo
 * @Description:  鎶ラ攢鐢宠
 */
@Service
public class ClaimExpenseService extends AbstractBaseService implements IClaimExpenseService {
  @Autowired
  public BaseDao baseDao;
  @Autowired
  PermissionService permissionService;
  @Autowired
  QueryFilterService queryFilterService;

  /**
   * @description: 璐圭敤鎶ラ攢鍒犻櫎
   * @author: ZhouJie
   * @date: 2021-06-01 11:35
   */
  @Override
  @Transactional
  public boolean delClaimExpense(FieldSetEntity fs) throws BaseException {
    String[] uuids = fs.getString("uuid").split(",");
    baseDao.delete(CmnConst.PRODUCT_OA_EXPENSE_CLAIM_SUB, BaseUtil.buildQuestionMarkFilter("claim_uuid",uuids.length,true),uuids);
    return baseDao.delete(CmnConst.PRODUCT_OA_EXPENSE_CLAIM, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID,uuids.length,true),uuids);
  }

  /**
   * @description: 璐圭敤鎶ラ攢淇濆瓨
   * @author: ZhouJie
   * @date: 2021-06-01 11:50
   */
  @Override
  @Transactional
  public String saveClaimExpense(FieldSetEntity fieldSetEntity) throws BaseException {
	  fieldSetEntity.setValue("flow_flag", 0);
    if(StringUtils.isEmpty(fieldSetEntity.getString("uuid"))){
      fieldSetEntity.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
      fieldSetEntity.setValue(CmnConst.CREATED_UTC_DATETIME, new Date());
      return baseDao.add(fieldSetEntity,true);
    }else {
      fieldSetEntity.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
      fieldSetEntity.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
      baseDao.update(fieldSetEntity,true);
      return fieldSetEntity.getString("uuid");
    }
  }
  /**
   * @description: 璐圭敤鎶ラ攢鍒楄〃
   * @author: ZhouJie
   * @date: 2021-06-01 13:57
   */
  public DataTableEntity listExpense(FieldSetEntity fs) throws BaseException {
    String queryFilter=fs.getString("filter");
    if(!BaseUtil.dataTableIsEmpty(fs.getSubDataTable("systemSeniorQueryString"))){
      queryFilter +="AND"+ queryFilterService.getQueryFilter(fs);
    }
    String dataFilter = permissionService.getDataFilter(fs.getTableName(),CmnConst.CREATED_BY);
    if(!StringUtils.isEmpty(dataFilter)){
      queryFilter += " and "+dataFilter;
    }
    DataTableEntity dt = baseDao.listTable(CmnConst.PRODUCT_OA_EXPENSE_CLAIM,queryFilter,null,null,null,fs.getInteger(CmnConst.PAGESIZE),fs.getInteger(CmnConst.CPAGE));
    baseDao.loadPromptData(dt);
    return dt;
  }
  /**
   * @description: 璐圭敤鎶ラ攢鐢宠璇︽儏
   * @author: ZhouJie
   * @date: 2021-06-01 14:40
   */
  public FieldSetEntity infoExpense(FieldSetEntity fs) throws BaseException {
    return baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_EXPENSE_CLAIM,fs.getUUID(),true);
  }

}