wisdomisite-java/src/main/java/com/zhgd/xmgl/util/JiuzhuDateUtil.java

377 lines
16 KiB
Java
Raw Normal View History

2024-09-07 18:48:41 +08:00
package com.zhgd.xmgl.util;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.redis.lock.RedisRepository;
import com.zhgd.xmgl.modules.basicdata.entity.Company;
import com.zhgd.xmgl.modules.basicdata.entity.DictionaryItem;
import com.zhgd.xmgl.modules.basicdata.service.ICompanyService;
import com.zhgd.xmgl.modules.basicdata.service.IDictionaryItemService;
import com.zhgd.xmgl.modules.cost.entity.CostContract;
import com.zhgd.xmgl.modules.cost.entity.CostContractPay;
import com.zhgd.xmgl.modules.cost.service.ICostContractPayService;
import com.zhgd.xmgl.modules.cost.service.ICostContractService;
import com.zhgd.xmgl.modules.jz.dto.PlanTargetDto;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.entity.ProjectSupplier;
import com.zhgd.xmgl.modules.project.service.IProjectService;
import com.zhgd.xmgl.modules.project.service.IProjectSupplierService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.sql.Timestamp;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Component
public class JiuzhuDateUtil {
@Value("${jiuzhu.address}")
private final String ADDRESS = "http://218.95.151.122:18000";
@Autowired
private IProjectService projectService;
@Autowired
private IProjectSupplierService projectSupplierService;
@Autowired
private ICostContractService costContractService;
@Autowired
private ICostContractPayService costContractPayService;
@Autowired
private ICompanyService companyService;
@Autowired
private IDictionaryItemService dictionaryItemService;
public void getSubCompanyData() {
String url = "/api/cube/restful/interface/getModeDataPageList/xmxx";
String systemid = "xmxx";
String d_password = "E3BA750749804E65B0A93833635F8ED2";
JSONObject mainTable = new JSONObject();
String result = doAction(url, systemid, d_password, mainTable);
if (StringUtils.isNotBlank(result)) {
List<String> projects = projectService.list(Wrappers.<Project>lambdaQuery().eq(Project::getNature, 1))
.stream().map(p -> p.getProjectId().toString()).collect(Collectors.toList());
JSONObject obj = JSONObject.parseObject(result);
JSONArray jsonArray = obj.getJSONArray("result");
List<Project> projectList = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject projectObj = jsonArray.getJSONObject(i).getJSONObject("mainTable");
Project project = new Project();
String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();
project.setProjectId(Long.valueOf(projectObj.getInteger("id")));
if (!projects.contains(project.getProjectId().toString())) {
project.setProjectSn(uuid);
}
project.setProjectName(projectObj.getString("xmmc"));
project.setProjectAddress(projectObj.getString("xmdz"));
project.setLongitude(projectObj.getString("xmdz"));
project.setLatitude(projectObj.getString("wdzb"));
project.setProjectNumber(projectObj.getString("xmbh"));
project.setProjectType(projectObj.getString("gclb"));
project.setEngineeringPurpose(projectObj.getInteger("gcyt"));
project.setStructureType(projectObj.getInteger( "jglx"));
project.setProjectAcreage(projectObj.getString("xmmj"));
project.setStartWorkDate(projectObj.getString("kgrq"));
project.setConstructionStage(projectObj.getInteger("sgjd"));
project.setSaleAcreage(projectObj.getString("ksmj"));
project.setHouseholds(projectObj.getInteger("hs"));
project.setBuildingNum(projectObj.getInteger("lds"));
project.setMajorProjectType(projectObj.getInteger("sfszdgc"));
Company sdw = companyService.getOne(Wrappers.<Company>lambdaQuery().eq(Company::getExternalId, projectObj.getString("sdw"))
.eq(Company::getCompanyType, 3));
project.setCompanySn(sdw == null ? "" : sdw.getCompanySn());
String xmlx = projectObj.getString("xmlx");
DictionaryItem projectLx = dictionaryItemService.getOne(Wrappers.<DictionaryItem>lambdaQuery()
.eq(DictionaryItem::getName, xmlx)
.eq(DictionaryItem::getDictionaryEncoding, "project_lx"));
project.setProjectLx(projectLx.getData());
2024-09-10 17:39:54 +08:00
project.setNature(projectObj.getString("xmlxxm").equals("0") ? 1 : 2);
2024-09-07 18:48:41 +08:00
projectList.add(project);
}
projectService.saveOrUpdateBatch(projectList);
}
}
public void getProjectSupplier() {
String url = "/api/cube/restful/interface/getModeDataPageList/gyszcxxlb";
String systemid = "gyszcxxlb";
String d_password = "D548C325B35C41CCA08D819D80151822";
JSONObject mainTable = new JSONObject();
mainTable.put("spzt", 2);
String result = doAction(url, systemid, d_password, mainTable);
if (StringUtils.isNotBlank(result)) {
JSONObject obj = JSONObject.parseObject(result);
JSONArray jsonArray = obj.getJSONArray("result");
List<ProjectSupplier> projectSupplierList = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject projectObj = jsonArray.getJSONObject(i).getJSONObject("mainTable");
ProjectSupplier projectSupplier = JSONObject.parseObject(JSON.toJSONString(projectObj), ProjectSupplier.class);
projectSupplierList.add(projectSupplier);
}
projectSupplierService.saveOrUpdateBatch(projectSupplierList);
}
}
public void getContract() {
String url = "/api/cube/restful/interface/getModeDataPageList/cghtlb";
String systemid = "cghtlb";
String d_password = "BAF2C273E784483EA3B865B7BA3A4B6B";
JSONObject mainTable = new JSONObject();
String result = doAction(url, systemid, d_password, mainTable);
if (StringUtils.isNotBlank(result)) {
JSONObject obj = JSONObject.parseObject(result);
JSONArray jsonArray = obj.getJSONArray("result");
List<CostContract> contractList = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject projectObj = jsonArray.getJSONObject(i).getJSONObject("mainTable");
CostContract costContract = JSONObject.parseObject(JSON.toJSONString(projectObj), CostContract.class);
JSONArray detailArray = jsonArray.getJSONObject(i).getJSONArray("detail1");
StringBuilder gys = new StringBuilder();
for (int j = 0; j < detailArray.size(); j++) {
String gysbm = detailArray.getJSONObject(j).getString("gysbm");
if (StringUtils.isNotBlank(gysbm)) {
gys.append(gysbm);
gys.append(",");
}
}
System.out.println(detailArray);
costContract.setGysbm(gys.toString());
contractList.add(costContract);
}
costContractService.saveOrUpdateBatch(contractList);
}
}
public void getContractPay() {
String url = "/api/cube/restful/interface/getModeDataPageList/FKGL";
String systemid = "HTFK";
String d_password = "D0679C10846644E193F45E2F08067735";
JSONObject mainTable = new JSONObject();
String result = doAction(url, systemid, d_password, mainTable);
if (StringUtils.isNotBlank(result)) {
JSONObject obj = JSONObject.parseObject(result);
JSONArray jsonArray = obj.getJSONArray("result");
List<CostContractPay> contractPayList = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject projectObj = jsonArray.getJSONObject(i).getJSONObject("mainTable");
CostContractPay costContractPay = JSONObject.parseObject(JSON.toJSONString(projectObj), CostContractPay.class);
contractPayList.add(costContractPay);
JSONArray detailArray = jsonArray.getJSONObject(i).getJSONArray("detail1");
System.out.println(detailArray);
}
costContractPayService.saveOrUpdateBatch(contractPayList);
}
}
public List<PlanTargetDto> getProjectTarget() {
String url = "/api/cube/restful/interface/getModeDataPageList/MBGL";
String systemid = "MBGL";
String d_password = "EC54DFE0A5F34B5DB18E2B7D8C9252F7";
JSONObject mainTable = new JSONObject();
String result = doAction(url, systemid, d_password, mainTable);
List<PlanTargetDto> planTargetDtoList = new ArrayList<>();
if (StringUtils.isNotBlank(result)) {
JSONObject obj = JSONObject.parseObject(result);
JSONArray jsonArray = obj.getJSONArray("result");
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject projectObj = jsonArray.getJSONObject(i).getJSONObject("mainTable");
PlanTargetDto planTargetDto = JSONObject.parseObject(JSON.toJSONString(projectObj), PlanTargetDto.class);
planTargetDtoList.add(planTargetDto);
}
}
return planTargetDtoList;
}
/**
*restful接口调用案例
*以getModeDataPageList为例
*/
public String doAction(String url, String systemid, String d_password, JSONObject mainTable){
CloseableHttpResponse response;// 响应类,
CloseableHttpClient httpClient = HttpClients.createDefault();
//restful接口url
HttpPost httpPost = new HttpPost(ADDRESS + url);
//当前日期
String currentDate = getCurrentDate();
//当前时间
String currentTime = getCurrentTime();
//获取时间戳
String currentTimeTamp = getTimestamp();
Map<String, Object> params = new HashMap<>();
Map paramDatajson = new HashMap<>();
//header
Map header = new HashMap<>();
//系统标识
// String systemid = "xmxx";
//密码
// String d_password = "E3BA750749804E65B0A93833635F8ED2";
//封装header里的参数
header.put("systemid",systemid);
header.put("currentDateTime",currentTimeTamp);
String md5Source = systemid+d_password+currentTimeTamp;
String md5OfStr = getMD5Str(md5Source).toLowerCase();
//Md5是系统标识+密码+时间戳 并且md5加密的结果
header.put("Md5",md5OfStr);
paramDatajson.put("header",header);
//封装pageinfo
JSONObject pageInfo = new JSONObject();
pageInfo.put("pageNo", 1);
pageInfo.put("pageSize", 1000);
paramDatajson.put("pageInfo",pageInfo);
//封装mainTable参数
// JSONObject mainTable = new JSONObject();
// mainTable.put("id", "1");
paramDatajson.put("mainTable",mainTable);
//封装operationinfo参数
JSONObject operationinfo = new JSONObject();
operationinfo.put("operator", "15273");
paramDatajson.put("operationinfo",operationinfo);
System.out.println("===请求参数datajson==="+paramDatajson);
params.put("datajson",paramDatajson);
//装填参数
List nvps = new ArrayList();
if(params!=null){
for (Object entry : params.entrySet()) {
Map.Entry<String, Object> en = (Map.Entry) entry;
nvps.add(new BasicNameValuePair(en.getKey(), JSONObject.toJSONString(en.getValue())));
}
}
try{
httpPost.addHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
response = httpClient.execute(httpPost);
if (response != null && response.getEntity() != null) {
//返回信息
String resulString = EntityUtils.toString(response.getEntity());
//todo这里处理返回信息
System.out.println("成功"+ resulString);
return resulString;
}else{
System.out.println("获取数据失败,请查看日志"+currentDate+" "+currentTime);
}
}catch (Exception e){
System.out.println("请求失败"+currentDate+" "+currentTime+"====errormsg:"+e.getMessage());
}
return null;
}
public String getMD5Str(String plainText){
//定义一个字节数组
byte[] secretBytes = null;
try {
// 生成一个MD5加密计算摘要
MessageDigest md = MessageDigest.getInstance("MD5");
//对字符串进行加密
md.update(plainText.getBytes());
//获得加密后的数据
secretBytes = md.digest();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("没有md5这个算法");
}
//将加密后的数据转换为16进制数字
String md5code = new BigInteger(1, secretBytes).toString(16);
// 如果生成数字未满32位需要前面补0
// 不能把变量放到循环条件值改变之后会导致条件变化。如果生成30位 只能生成31位md5
int tempIndex = 32 - md5code.length();
for (int i = 0; i < tempIndex; i++) {
md5code = "0" + md5code;
}
return md5code;
}
public static String getCurrentTime() {
Date newdate = new Date();
long datetime = newdate.getTime();
Timestamp timestamp = new Timestamp(datetime);
String currenttime = (timestamp.toString()).substring(11, 13) + ":" + (timestamp.toString()).substring(14, 16) + ":"
+ (timestamp.toString()).substring(17, 19);
return currenttime;
}
public static String getCurrentDate() {
Date newdate = new Date();
long datetime = newdate.getTime();
Timestamp timestamp = new Timestamp(datetime);
String currentdate = (timestamp.toString()).substring(0, 4) + "-" + (timestamp.toString()).substring(5, 7) + "-"
+ (timestamp.toString()).substring(8, 10);
return currentdate;
}
/**
* 获取当前日期时间 YYYY-MM-DD HH:MM:SS
* @return 当前日期时间
*/
public static String getCurDateTime() {
Date newdate = new Date();
long datetime = newdate.getTime();
Timestamp timestamp = new Timestamp(datetime);
return (timestamp.toString()).substring(0, 19);
}
/**
* 获取时间戳 格式如19990101235959
* @return
*/
public static String getTimestamp(){
return getCurDateTime().replace("-", "").replace(":", "").replace(" ", "");
}
public static int getIntValue(String v, int def) {
try {
return Integer.parseInt(v);
} catch (Exception ex) {
return def;
}
}
public static String null2String(Object s) {
return s == null ? "" : s.toString();
}
}