YYC
2025-04-25 9cec6b5c40e716cba4ab687f1e8a61c9cd95b2d7
1
2
3
4
5
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
package com.fzzy.api.view.pr;
 
import com.alibaba.fastjson.JSONObject;
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.Expose;
import com.bstek.dorado.data.provider.Page;
import com.fzzy.api.dto.GbCodingData;
import com.fzzy.api.dto.ReqGbCoding;
import com.fzzy.api.dto.RespGbCoding;
import com.fzzy.api.entity.ApiConfs;
import com.fzzy.api.entity.GbUnifiedCoding;
import com.fzzy.api.service.ApiCommonService;
import com.fzzy.api.view.repository.GbUnifiedCodingRep;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
 
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
 
/**
 * @Description 统一编码数据管理
 * @Author CZT
 * @Date 2024/4/18 10:28
 */
@Slf4j
@Component
public class GbUnifiedCodingPR {
 
    private static final String GB_CODING_URL = "http://121.36.17.6:28088/admin-api/coding/fmxx/queryDataInfo";
    @Autowired
    private GbUnifiedCodingRep codingRep;
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private ApiCommonService apiCommonService;
 
    /**
     * gbUnifiedCodingPR#pageList
     *
     * @return
     */
    @SuppressWarnings("serial")
    @DataProvider
    public void pageList(Page<GbUnifiedCoding> page, Map<String, Object> param) {
        //多参数分页查询
        Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.DESC, "updateTime");
 
        if (null == param) {
            org.springframework.data.domain.Page<GbUnifiedCoding> japPage = codingRep.findAll(pageable);
            page.setEntityCount((int) japPage.getTotalElements());
            page.setEntities(japPage.getContent());
 
            return;
        }
 
        Specification<GbUnifiedCoding> specification = new Specification<GbUnifiedCoding>() {
            public Predicate toPredicate(Root<GbUnifiedCoding> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                List<Predicate> predicates = new ArrayList<Predicate>(); //所有的断言
 
                String str = (String) param.get("ajmc");
                if (StringUtils.isNotBlank(str)) {
                    Predicate predicate1 = cb.equal(root.get("ajmc"), str);
                    predicates.add(predicate1);
                }
                str = (String) param.get("cfmc");
                if (StringUtils.isNotBlank(str)) {
                    Predicate predicate2 = cb.equal(root.get("cfmc"), str);
                    predicates.add(predicate2);
                }
                str = (String) param.get("kqmc");
                if (StringUtils.isNotBlank(str)) {
                    Predicate predicate3 = cb.equal(root.get("kqmc"), str);
                    predicates.add(predicate3);
                }
                return cb.and(predicates.toArray(new Predicate[0]));
            }
        };
 
        log.debug("---------分页参数查询----------{}", param.toString());
        org.springframework.data.domain.Page<GbUnifiedCoding> japPage = codingRep.findAll(specification, pageable);
        page.setEntityCount((int) japPage.getTotalElements());
        page.setEntities(japPage.getContent());
    }
 
    /**
     * gbUnifiedCodingPR#delData
     *
     * @param data
     */
    @Expose
    public String delData(GbUnifiedCoding data) {
 
        codingRep.deleteById(data.getAjdm());
 
        return null;
    }
 
    /**
     * gbUnifiedCodingPR#pullData
     * 拉取统一编码数据
     *
     * @param dwdm
     * @return
     */
    @Expose
    public String pullData(String dwdm) {
 
        if (StringUtils.isEmpty(dwdm)) {
            return "执行失败:单位编码为空,请核查!";
        }
 
        String url = GB_CODING_URL;
        List<ApiConfs> apiConfs = apiCommonService.listCacheConf();
        if (null != apiConfs || apiConfs.size() > 0) {
            ApiConfs apiConf = apiConfs.get(0);
            if (null != apiConf && StringUtils.isNotEmpty(apiConf.getGbCodingUrl())) {
                url = apiConf.getGbCodingUrl();
            }
        }
 
        //设置参数
        ReqGbCoding reqGbCoding = new ReqGbCoding(dwdm);
        RespGbCoding respGbCoding = restTemplate.postForObject(url, reqGbCoding, RespGbCoding.class);
        if (null == respGbCoding) {
            return "拉取数据失败,请重试!";
        }
        if (!"0".equals(respGbCoding.getCode())) {
            return respGbCoding.getMsg();
        }
        GbCodingData data = JSONObject.parseObject(JSONObject.toJSONString(respGbCoding.getData()), GbCodingData.class);
        if (null == data || data.getList().isEmpty()) {
            return "拉取数据为空,请重试!";
        }
        for (GbUnifiedCoding gbUnifiedCoding : data.getList()) {
            gbUnifiedCoding.setUpdateTime(new Date());
            gbUnifiedCoding.setQyxz(gbUnifiedCoding.getFrdwdm().substring(0, 2));
            codingRep.save(gbUnifiedCoding);
        }
 
        return "同步命令发送完成,请稍等刷新数据查看";
    }
}