OrgSyncJob.java 4.08 KB
Newer Older
1 2
package pwc.taxtech.atms.common.schedule;

gary's avatar
gary committed
3
import com.alibaba.fastjson.JSON;
4
import com.alibaba.fastjson.JSONObject;
gary's avatar
gary committed
5
import com.google.common.collect.Lists;
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.quartz.QuartzJobBean;
import pwc.taxtech.atms.common.util.HttpUtil;
import pwc.taxtech.atms.dao.OrganizationMapper;
import pwc.taxtech.atms.dao.RegionMapper;
import pwc.taxtech.atms.dto.organization.DDSyncOrgInfo;
import pwc.taxtech.atms.dto.organization.OrgSyncData;
import pwc.taxtech.atms.entity.Organization;
import pwc.taxtech.atms.entity.OrganizationExample;
import pwc.taxtech.atms.entity.Region;
import pwc.taxtech.atms.entity.RegionExample;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class OrgSyncJob extends QuartzJobBean {
    private static final Logger logger = LoggerFactory.getLogger(OrgSyncJob.class);

    @Resource
    private OrganizationMapper organizationMapper;

    @Resource
    private RegionMapper regionMapper;

    @Value("${org_sync_url}")
    private String orgSyncUrl;

    @Value("${org_sync_token}")
    private String token;

    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        JobDataMap dataMap = jobExecutionContext.getJobDetail().getJobDataMap();
        Map<String, String> headers = new HashMap<>();
gary's avatar
1  
gary committed
48
        // todo 这里token需确认
49 50
        headers.put("token", token);
        headers.put("Content-Type", "application/x-www-form-urlencoded");
51 52
        headers.put("Idap", "eddie.wu_v");
        int pageSize = 1;
gary's avatar
gary committed
53
        List<OrgSyncData> failObjs = Lists.newArrayList();
54
        try {
55 56
            for (int i = 1; i <= pageSize; i++) {
                String response = HttpUtil.get(orgSyncUrl+"?currentPage="+i, headers);
gary's avatar
gary committed
57
                logger.info("机构信息同步记录:"+response);
58
                DDSyncOrgInfo ddSyncOrgInfo = JSONObject.parseObject(response, DDSyncOrgInfo.class);
gary's avatar
gary committed
59
                pageSize = ddSyncOrgInfo.getTotalPage();
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
                List<OrgSyncData> orgSyncDatas = ddSyncOrgInfo.getData();
                orgSyncDatas.forEach(osd -> {
                    OrganizationExample example = new OrganizationExample();
                    example.createCriteria().andNameEqualTo(osd.getNameCN());
                    Organization o = new Organization();
                    o.setClientCode(osd.getCode());
                    o.setCode(osd.getCode());
                    o.setEnterpriseAccountCode(String.valueOf(osd.getSobId()));
                    o.setEnterpriseAccountName(osd.getSobName());
                    o.setCurrencyCode(osd.getCurrencyCode());
                    o.setLegalEntity(osd.getLegalEntity());
                    o.setLegalPersonName(osd.getLegalRepresentative());
                    o.setAddress(osd.getAddress());
                    o.setCreateTime(osd.getGmtCreate());
                    o.setUpdateTime(osd.getGmtModified());
                    o.setPsCode(osd.getPsCode());
                    RegionExample regionExample = new RegionExample();
                    regionExample.createCriteria().andShortNameEqualTo(osd.getCompanyLocation());
                    List<Region> regions = regionMapper.selectByExample(regionExample);
                    if (regions.size() > 0) {
                        o.setRegionId(regions.get(0).getId());
                    }
gary's avatar
gary committed
82 83 84
                    if(organizationMapper.countByExample(example)<1){
                        failObjs.add(osd);
                    }
85 86 87
                    organizationMapper.updateByExampleSelective(o, example);
                });
            }
gary's avatar
gary committed
88
            logger.info("同步未匹配的机构记录:"+ JSON.toJSONString(failObjs));
89 90 91 92 93 94
        } catch (Exception e) {
            logger.error(String.format("机构信息同步异常:[%s]", e.getMessage()), e);
        }
    }

}