ProjectInfoServiceImpl.java 4.57 KB
Newer Older
1 2 3 4 5 6
package pwc.taxtech.atms.service.impl;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
7
import pwc.taxtech.atms.constant.enums.TbImportType;
8 9
import pwc.taxtech.atms.dao.PeriodInfoMapper;
import pwc.taxtech.atms.dto.OperationResultDto;
10 11
import pwc.taxtech.atms.entity.PeriodInfo;
import pwc.taxtech.atms.entity.PeriodInfoExample;
12

13
import java.util.Date;
14
import java.util.List;
15
import java.util.UUID;
16

17 18
import static pwc.taxtech.atms.constant.Constant.FIRST_OR_DEFAULT;

19
@Service
20
public class ProjectInfoServiceImpl {
21 22 23 24 25 26 27
    private static final Logger LOGGER = LoggerFactory.getLogger(ProjectServiceImpl.class);
    @Autowired
    private PeriodInfoMapper periodInfoMapper;

    public OperationResultDto<Boolean> isProjectImportedData(String projectId, Integer serviceType, Integer importTypeId) {
        try {
            PeriodInfoExample example = new PeriodInfoExample();
28
            PeriodInfoExample.Criteria criteria = example.createCriteria().andProjectIdEqualTo(projectId).andImportTypeEqualTo(importTypeId);
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
            if (serviceType != null) criteria.andServiceTypeEqualTo(serviceType);

            List<PeriodInfo> piList = periodInfoMapper.selectByExample(example);

            OperationResultDto<Boolean> ord = new OperationResultDto<>();
            ord.setResult(piList != null & !piList.isEmpty());
            ord.setData(ord.getResult());
            return ord;
        } catch (Exception e) {
            LOGGER.warn("IsProjectImportedData method error", e);
            OperationResultDto<Boolean> ord = new OperationResultDto<>();
            ord.setResult(false);
            ord.setData(false);
            return ord;
        }
    }

    public OperationResultDto<Boolean> isProjectImportedData(String projectId, Integer importTypeId) {
neo's avatar
neo committed
47
        return isProjectImportedData(projectId, null, importTypeId);
48
    }
49

neo's avatar
neo committed
50 51
    public OperationResultDto<List<PeriodInfo>> getProjectImportType(String projectId, List<Integer> periods, Integer serviceTypeId, String id) {
        PeriodInfoExample example = new PeriodInfoExample();
52 53
        if (!periods.isEmpty()) example.createCriteria().andProjectIdEqualTo(projectId).andPeriodIn(periods);
        else example.createCriteria().andProjectIdEqualTo(projectId);
neo's avatar
neo committed
54 55 56 57 58 59 60
        List<PeriodInfo> existed = periodInfoMapper.selectByExample(example);

        periods.forEach(m -> {
            if (!existed.stream().anyMatch(n -> {
                return n.getPeriod().intValue() == m.intValue();
            })) {
                PeriodInfo info = new PeriodInfo();
61 62
                info.setId(UUID.randomUUID().toString());
                info.setProjectId(projectId);
neo's avatar
neo committed
63 64
                info.setPeriod(m);
                info.setStatus(0);
65
                info.setCreatorId(id);
neo's avatar
neo committed
66 67 68 69 70 71 72
                info.setImportType(TbImportType.UnImported.getCode());
                info.setServiceType(serviceTypeId);
                info.setCreateTime(new Date());
                info.setUpdateTime(new Date());
                periodInfoMapper.insert(info);
            }
        });
73
        example.createCriteria().andProjectIdEqualTo(projectId).andServiceTypeEqualTo(serviceTypeId);
neo's avatar
neo committed
74 75 76 77 78
        OperationResultDto<List<PeriodInfo>> resultDto = new OperationResultDto();
        resultDto.setResult(true);
        resultDto.setResultMsg("");
        resultDto.setData(periodInfoMapper.selectByExample(example));
        return resultDto;
79
    }
80

81
    public Integer getImportType(String projectId, Integer periodId, String userId, Integer serviceType) {
82
        PeriodInfoExample example = new PeriodInfoExample();
83
        example.createCriteria().andProjectIdEqualTo(projectId).andProjectIdEqualTo(projectId).andServiceTypeEqualTo(serviceType);
84

neo's avatar
neo committed
85 86
        List<PeriodInfo> periodInfoList = periodInfoMapper.selectByExample(example);
        if (periodInfoList == null || periodInfoList.size() == 0) {
87
            PeriodInfo periodInfo = new PeriodInfo();
88 89 90
            periodInfo.setId(UUID.randomUUID().toString());
            periodInfo.setProjectId(projectId);
            periodInfo.setPeriod(periodId);
91
            periodInfo.setStatus(0);
92
            periodInfo.setCreatorId(userId);
93 94 95 96 97 98 99
            periodInfo.setImportType(TbImportType.UnImported.getCode());
            periodInfo.setServiceType(serviceType);
            periodInfo.setCreateTime(new Date());
            periodInfo.setUpdateTime(new Date());

            periodInfoMapper.insert(periodInfo);
            return TbImportType.UnImported.getCode();
neo's avatar
neo committed
100 101
        } else {
            return periodInfoList.get(FIRST_OR_DEFAULT).getImportType();
102 103 104
        }

    }
105
}