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 page, Map param) { //多参数分页查询 Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.DESC, "updateTime"); if (null == param) { org.springframework.data.domain.Page japPage = codingRep.findAll(pageable); page.setEntityCount((int) japPage.getTotalElements()); page.setEntities(japPage.getContent()); return; } Specification specification = new Specification() { public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List predicates = new ArrayList(); //所有的断言 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 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 = 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 "同步命令发送完成,请稍等刷新数据查看"; } }