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 "同步命令发送完成,请稍等刷新数据查看";
|
}
|
}
|