AsraDailyQueryServiceImpl.java 6.41 KB
package com.zteits.oa.report.biz;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.xiaoleilu.hutool.date.DateUtil;
import com.xiaoleilu.hutool.util.CollectionUtil;
import com.zteits.oa.api.base.bean.BizResult;
import com.zteits.oa.api.dto.asradaily.AsraDailyDTO;
import com.zteits.oa.api.dto.asradaily.param.AsraDailyQueryReq;
import com.zteits.oa.api.dto.asradaily.param.AsraDailySaveOrUpdateReq;
import com.zteits.oa.api.service.report.query.AsraDailyQueryService;
import com.zteits.oa.report.dao.AsraDailyDao;
import com.zteits.oa.report.domain.AsraDaily;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zteits.oa.api.dto.asradaily.AsraDailyOpNumForCurrentDayDTO;
import com.zteits.oa.api.dto.asradaily.AsraProjectAndPersonNumDTO;
import com.zteits.oa.api.dto.asradaily.QueryAsraDailyAllDetailForListReqDTO;
import com.zteits.oa.api.dto.asradaily.QueryAsraDailyAllForListReqDTO;
import com.zteits.oa.api.dto.asradaily.param.AsraDailyForTotalNumAndDetailReq;
import com.zteits.oa.report.domain.sdo.AsraDailyDO;
import com.zteits.oa.report.domain.sdo.AsraDailyOpNumForCurrentDayDO;
import java.util.Date;

/**
 * Copyright: Copyright (c) 2018  zteits
 *
 * @Description:
 * @version: v1.0.0
 * @author: xiejianpeng
 * @date: 2018/7/31 15
 * Modification History:
 * Date             Author          Version            Description
 * ---------------------------------------------------------*
 * 2018/7/31      xiejianpeng         v1.0.0               创建
 */
@Service
public class AsraDailyQueryServiceImpl implements AsraDailyQueryService {

    @Autowired
    private AsraDailyDao asraDailyDao;

    @Override
    public BizResult<List<AsraDailyDTO>> queryAsraDailyList(AsraDailyQueryReq asraDailyQueryReq) {
        List<AsraDailyDTO> asraDailyDTOs = new ArrayList<>();
        List<AsraDaily> asraDailies = asraDailyDao.queryAsraDailyList(asraDailyQueryReq);
        if(CollectionUtil.isNotEmpty(asraDailies)){
            for(AsraDaily asraDaily:asraDailies){
                AsraDailyDTO asraDailyDTO = new AsraDailyDTO();
                BeanUtils.copyProperties(asraDaily,asraDailyDTO);
                asraDailyDTOs.add(asraDailyDTO);
            }
        }
        return new BizResult<>(asraDailyDTOs);
    }

    /**
	 * 工时查询-当天提交及未提交人数汇总.<br/>
	 * @param request
	 * @return
	 * 2018年8月1日  wangfs.<br/>
	 */
	@Override
	public BizResult<AsraDailyOpNumForCurrentDayDTO> queryAsraDailyOpNumForCurrentDay(
			AsraDailyForTotalNumAndDetailReq request) {
		AsraDailyOpNumForCurrentDayDTO asraDailyOpNumForCurrentDayDTO = new AsraDailyOpNumForCurrentDayDTO();
		AsraDailyOpNumForCurrentDayDO asraDailyOpNumForCurrentDayDO = asraDailyDao.queryAsraDailyOpNumForCurrentDay(request);
		BeanUtils.copyProperties(asraDailyOpNumForCurrentDayDO, asraDailyOpNumForCurrentDayDTO);
		return new BizResult<AsraDailyOpNumForCurrentDayDTO>(asraDailyOpNumForCurrentDayDTO);
	}

	/**
	 * 工时查询-所有员工及自己或者自己日报.<br/>
	 * @param request
	 * @return
	 * 2018年8月1日  wangfs.<br/>
	 */
	@Override
	public BizResult<QueryAsraDailyAllForListReqDTO> queryAsraDailyAllForList(
			AsraDailyForTotalNumAndDetailReq request) {
		QueryAsraDailyAllForListReqDTO queryAsraDailyAllForListReqDTO = new QueryAsraDailyAllForListReqDTO();
		List<AsraProjectAndPersonNumDTO> personNumDTOList = new ArrayList<>();
		
		
		List<AsraDailyDO> list = asraDailyDao.queryAsraDailyAllForList(request);
		//添加项目
		if(CollectionUtil.isNotEmpty(list)){
			for(AsraDailyDO asraDailyDO:list){
				if(asraDailyDO == null){
					continue;
				}
				AsraProjectAndPersonNumDTO asraProjectAndPersonNumDTO = new AsraProjectAndPersonNumDTO();
				BeanUtils.copyProperties(asraDailyDO, asraProjectAndPersonNumDTO);
				if(!personNumDTOList.contains(asraProjectAndPersonNumDTO)){
					personNumDTOList.add(asraProjectAndPersonNumDTO);
				}else{
					for (AsraProjectAndPersonNumDTO getAsraProjectAndPersonNumDTO:personNumDTOList){
						if(getAsraProjectAndPersonNumDTO == null){
							continue;
						}
						if(getAsraProjectAndPersonNumDTO.getProjectId().equals(asraDailyDO.getProjectId())){
							getAsraProjectAndPersonNumDTO.setCommitPersonNum(getAsraProjectAndPersonNumDTO.getCommitPersonNum()+asraDailyDO.getCommitPersonNum());
						}
					}
				}
			}
			//2.添加明细
			for(AsraProjectAndPersonNumDTO asraProjectAndPersonNumDTO:personNumDTOList){
				List<QueryAsraDailyAllDetailForListReqDTO> listDetail = new ArrayList<>();
				if(asraProjectAndPersonNumDTO == null){
					continue;
				}
				for(AsraDailyDO asraDailyDO:list){
					if(asraDailyDO == null){
						continue;
					}
					if(asraProjectAndPersonNumDTO.getProjectId().equals(asraDailyDO.getProjectId())){
						QueryAsraDailyAllDetailForListReqDTO dto = new QueryAsraDailyAllDetailForListReqDTO();
						BeanUtils.copyProperties(asraDailyDO, dto);
						if(asraDailyDO.getDailyDate()!=null){
							String dailyDate = DateUtil.format(asraDailyDO.getDailyDate(),"yyyy-MM-dd");
							dto.setDailyDate(dailyDate.substring(0,4)+"年"+dailyDate.substring(5,7)+"月"+dailyDate.substring(8)+"日");
						}
						listDetail.add(dto);
						
					}
				}
				asraProjectAndPersonNumDTO.setListDetail(listDetail);
			}
		}
		queryAsraDailyAllForListReqDTO.setList(personNumDTOList);
		
		return new BizResult<QueryAsraDailyAllForListReqDTO>(queryAsraDailyAllForListReqDTO);
	}
	
	
    @Override
    public BizResult<Long> saveOrUpdateAsraDaily(AsraDailySaveOrUpdateReq request) {
        AsraDaily asraDaily = new AsraDaily();
        BeanUtils.copyProperties(request, asraDaily);
        asraDaily.setModfiyDate(new Date());
        asraDaily.setModfiyEmpid(request.getAsarOpId() + "");
        asraDaily.setModfiyEmpName(request.getAsarOpName() + "");
        Date dailyDate = DateUtil.parseDate(request.getDailyDate());
        asraDaily.setDailyDate(dailyDate);

        Long id;
        if (null == request.getId()) {
            //新增
            asraDaily.setDataState(1);
            asraDaily.setCreateDate(new Date());
            asraDaily.setCreateEmpid(request.getAsarOpId()+"");
            asraDaily.setCreateEmpName(request.getAsarOpName() + "");
			id = asraDailyDao.saveAsraDaily(asraDaily);
        } else {
            //更新
			id = asraDailyDao.updateAsraDaily(asraDaily);
        }

        return new BizResult<>(id);
    }
}