Commit 64b13181 authored by 赵啸非's avatar 赵啸非

修改配置文件

parent 01bd6cc5
......@@ -35,7 +35,8 @@
<profiles.baseUrl>http://10.225.128.55</profiles.baseUrl>
<profiles.ocrUrl>http://rocrt.egovrobot.com/</profiles.ocrUrl>
<profiles.apiUrl>http://api.egovrobot.com</profiles.apiUrl>
<profiles.mq>sanya</profiles.mq>
<profiles.robertServerUrl>http://localhost:8099/</profiles.robertServerUrl>
<profiles.mq>yibin</profiles.mq>
<profiles.activemq.brokerUrl>tcp://59.175.148.30:62818</profiles.activemq.brokerUrl>
<profiles.publish.path>/home/publish</profiles.publish.path>
</properties>
......@@ -50,7 +51,7 @@
<profiles.baseUrl>http://10.225.128.55</profiles.baseUrl>
<profiles.ocrUrl>http://rocrt.egovrobot.com/</profiles.ocrUrl>
<profiles.apiUrl>http://api.egovrobot.com</profiles.apiUrl>
<profiles.mq>sanya</profiles.mq>
<profiles.mq>yibin</profiles.mq>
<profiles.activemq.brokerUrl>tcp://8.136.255.30:11044</profiles.activemq.brokerUrl>
<profiles.publish.path>/home/publish</profiles.publish.path>
</properties>
......@@ -126,6 +127,14 @@
<artifactId>hutool-all</artifactId>
<version>5.8.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
</dependencies>
<build>
......
package com.lilosoft.api.bean.receive;
import lombok.Data;
@Data
public class ErrorsItem{
private int errorType;
private String name;
private String error;
private String fileId;
}
\ No newline at end of file
package com.lilosoft.api.bean.receive;
import lombok.Data;
@Data
public class FileDataItem {
private String fileName;
private String jsonData;
private String fileUrl;
private String id;
private String fileId;
private String name;
private byte[] bytes;
private String downloadUrl;
}
\ No newline at end of file
package com.lilosoft.api.bean.receive;
import lombok.Data;
@Data
public class ProjectData{
private String transactcode;
private int times;
private String extUrl;
private String taskUrl;
private String netUrl;
private String name;
private String replyVoice;
private String localId;
private String isNet;
}
\ No newline at end of file
package com.lilosoft.api.bean.receive;
import java.util.List;
import lombok.Data;
@Data
public class ReceiveMsgInfo{
private String msg;
private String wordUrl;
private String isSkip;
private String itemCode;
private String code;
private String isRpa;
private List<FileDataItem> fileData;
private String type;
private String batchId;
private String isPrintWord;
private List<Object> labels;
private ProjectData projectData;
private String artificialType;
private String rpaData;
private String wordTips;
private String scanUrl;
private Boolean success;
private String fileUrl;
private String pageUrl;
private String enterpriseId;
private String isReceipt;
private String projectId;
private List<ErrorsItem> errors;
}
\ No newline at end of file
package com.lilosoft.api.controller;
import cn.hutool.core.util.IdUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.lilosoft.api.api.RobotApi;
import com.lilosoft.api.bean.RobotCaseRecord;
import com.lilosoft.api.bean.receive.ReceiveMsgInfo;
import com.lilosoft.api.service.ApplyService;
import com.lilosoft.api.service.ComplexService;
import com.lilosoft.core.utils.ObjectUtils;
import lombok.extern.slf4j.Slf4j;
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.jms.annotation.JmsListener;
......@@ -25,6 +25,8 @@ public class MqConsumer {
@Autowired
private ApplyService applyService;
@Autowired
private ComplexService complexService;
@Autowired
private RobotApi robotApi;
......@@ -34,9 +36,7 @@ public class MqConsumer {
@JmsListener(destination = "${api.mq}", containerFactory = "jmsListenerContainerQueue")
public void receiveMsg(HashMap<String, String> text) {
log.info("receive msg==>{}", JSONUtil.toJsonStr(text));
// log.info("receive msg==>{}", JSONUtil.toJsonStr(text));
RobotCaseRecord caseRecord = new RobotCaseRecord();
caseRecord.setId(IdUtil.simpleUUID());
caseRecord.setContent(text.get("content"));
......@@ -45,15 +45,20 @@ public class MqConsumer {
caseRecord.setUpdateTime(new Date());
try {
robotApi.saveRecord(caseRecord);
HashMap<String, Object> entries = JSONUtil.toBean(text.get("content"), HashMap.class);
String apply = applyService.webApply(entries);
if (ObjectUtils.isEmpty(apply)) {
String content = text.get("content");
ReceiveMsgInfo receiveMsgInfo = JSON.parseObject(content, ReceiveMsgInfo.class);
// HashMap<String, Object> entries = JSONUtil.toBean(text.get("content"), HashMap.class);
// String apply = applyService.webApply(entries);
String apply = complexService.windowApply(receiveMsgInfo);
/* if (ObjectUtils.isEmpty(apply)) {
caseRecord.setSendFlag("2");
caseRecord.setMsg("success");
} else {
caseRecord.setSendFlag("1");
caseRecord.setMsg(apply);
}
}*/
robotApi.saveRecord(caseRecord);
} catch (Exception e) {
caseRecord.setSendFlag("1");
......
......@@ -4,6 +4,8 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.lilosoft.api.service.complexWindow.CommonData;
import com.lilosoft.api.service.complexWindow.ComplexWindowAbstract;
import com.lilosoft.core.utils.Base64Helper;
import org.springframework.stereotype.Service;
......@@ -20,21 +22,27 @@ public class ApplyService extends PublicService {
*/
public String webApply(HashMap<String, Object> paramsMap) throws Exception {
logger.info(JSONUtil.toJsonStr(paramsMap));
String itemCode = paramsMap.get("ItemCode").toString();
if(!paramsMap.containsKey("address")){
//事项编码,通过这个获取需要提交到综合窗口服务 空不提交
String itemCode = (String) paramsMap.getOrDefault("ItemCode", "");
ComplexWindowAbstract complexWindowAbstract = ComplexWindowAbstract.newType(itemCode);
CommonData commonData = new CommonData();
complexWindowAbstract.doHandleWork(commonData);
if (!paramsMap.containsKey("address")) {
paramsMap.put("address", "");//办事人联系地址
}
HashMap<String, Object> formData = new HashMap<>();//需要提交的表单数据(不同事项不同字段),需根据formId获取表单字段
String result = "";//返回结果
boolean check = true;//事项是否查找到,默认事项已经查找到
if("46020400WJ-XK-1104".equals(itemCode)){//公共场所卫生许可证注销
if ("46020400WJ-XK-1104".equals(itemCode)) {//公共场所卫生许可证注销
ggcswxxkzx(paramsMap, formData);
}else {
} else {
check = false;
result = "未查询到相关事项;";
logger.error(result + JSONUtil.toJsonStr(paramsMap));
}
if(check){
if (check) {
//通用上传接口
result = super.webApply(paramsMap, formData);
}
......@@ -45,7 +53,7 @@ public class ApplyService extends PublicService {
/**
* 公共场所卫生许可证注销
*/
private void ggcswxxkzx(HashMap<String, Object> paramsMap, HashMap<String, Object> formData){
private void ggcswxxkzx(HashMap<String, Object> paramsMap, HashMap<String, Object> formData) {
//组装第三步提交表单需要的数据,此数据是根据当前事项表单字段获取
formData.put("ShenQingRiQi", DateUtil.today());//申请日期
formData.put("XuKeZhengHao", "");//许可证号
......@@ -55,14 +63,14 @@ public class ApplyService extends PublicService {
formData.put("FaDingDaiBiaoRen", paramsMap.get("FaDingDaiBiaoRen"));//法定代表人
formData.put("TongYiSheHuiXinYongDaiMa", paramsMap.get("TongYiSheHuiXinYongDaiMa"));//统一社会信用代码
JSONArray materials = JSONUtil.parseArray(paramsMap.get("materials"));//材料列表
for (int n = 0, m = materials.size(); n < m ; n++) {
for (int n = 0, m = materials.size(); n < m; n++) {
JSONObject jsonObject1 = materials.getJSONObject(n);
String fileId = jsonObject1.getStr("fileId");//当前材料编码
if("hygiene".equals(fileId) || "business".equals(fileId)){//公共场所卫生许可证/营业执照归为一类
if ("hygiene".equals(fileId) || "business".equals(fileId)) {//公共场所卫生许可证/营业执照归为一类
jsonObject1.putOpt("fileCode", "46020400WJ-XK-1104-00003");
} else if("applicationForm".equals(fileId) || "applicationText".equals(fileId)){//关于注销公共场所卫生许可证的申请书/申请表归为一类
} else if ("applicationForm".equals(fileId) || "applicationText".equals(fileId)) {//关于注销公共场所卫生许可证的申请书/申请表归为一类
jsonObject1.putOpt("fileCode", "46020400WJ-XK-1104-00002");
} else if("idcard".equals(fileId)){//多个身份证归为一类
} else if ("idcard".equals(fileId)) {//多个身份证归为一类
jsonObject1.putOpt("fileCode", "46020400WJ-XK-1104-00001");
} else {//多余材料归为证照类
jsonObject1.putOpt("fileCode", "46020400WJ-XK-1104-00003");
......@@ -80,7 +88,7 @@ public class ApplyService extends PublicService {
}
//危险化学品经营许可证变更-法人变更
private void wxhxpjyxkzbg(HashMap<String, Object> paramsMap, HashMap<String, Object> formData){
private void wxhxpjyxkzbg(HashMap<String, Object> paramsMap, HashMap<String, Object> formData) {
String temp = String.valueOf(formData.get("rpaData"));
String rpaData = new String(Base64Helper.decode(temp));
......@@ -88,26 +96,25 @@ public class ApplyService extends PublicService {
List<Map<String, Object>> handlings = new ArrayList<>();
Map<String, Object> handling = new HashMap<>();
handling.put("eventId","852dcb2bb1aa70255871f75cf4868fa7"); //综窗平台事项id
handling.put("objectType","O"); //事项面对对象,P自然人,O法人
handling.put("eventId", "852dcb2bb1aa70255871f75cf4868fa7"); //综窗平台事项id
handling.put("objectType", "O"); //事项面对对象,P自然人,O法人
handlings.add(handling);
formData.put("handlings",handlings);
formData.put("infoMap",null); //表单信息,办件要素接口获取,此事项无
formData.put("handlings", handlings);
formData.put("infoMap", null); //表单信息,办件要素接口获取,此事项无
Map<String, Object> applicantLegal = new HashMap<>(); //申请人信息
applicantLegal.put("applicantName",null); //姓名
applicantLegal.put("documentId",null); //证件类型
applicantLegal.put("applicantIdNumber",null); //证件号码
formData.put("applicantLegal",applicantLegal);
applicantLegal.put("applicantName", null); //姓名
applicantLegal.put("documentId", null); //证件类型
applicantLegal.put("applicantIdNumber", null); //证件号码
formData.put("applicantLegal", applicantLegal);
Map<String, Object> legalProxy = new HashMap<>(); //法人信息,法人事项必填
legalProxy.put("legalName",rpa.getStr("principalName")); //姓名
legalProxy.put("documentId",null); //证件类型
legalProxy.put("legalIdNumber",rpa.getStr("principalCardNumber")); //证件号码
formData.put("legalProxy",legalProxy);
legalProxy.put("legalName", rpa.getStr("principalName")); //姓名
legalProxy.put("documentId", null); //证件类型
legalProxy.put("legalIdNumber", rpa.getStr("principalCardNumber")); //证件号码
formData.put("legalProxy", legalProxy);
List<String> itemsIds = new ArrayList<>(); //情形项id集合
itemsIds.add("d32d382b1b3ff119378c2813bd581aed"); //综窗平台情形项id
formData.put("itemsIds",itemsIds);
formData.put("itemsIds", itemsIds);
}
}
package com.lilosoft.api.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.lilosoft.api.api.OcrApi;
import com.lilosoft.api.bean.receive.ReceiveMsgInfo;
import com.lilosoft.api.service.complexWindow.CommonData;
import com.lilosoft.api.service.complexWindow.ComplexWindowAbstract;
import com.lilosoft.core.utils.Base64Helper;
import lombok.extern.slf4j.Slf4j;
import okhttp3.ResponseBody;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import retrofit2.Response;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 综窗处理类
*
* @author: zxfei
* @date: 2023/10/29 10:51
*/
@Service
@Slf4j
public class ComplexService extends PublicService {
@Autowired
private OcrApi ocrApi;
@Value("${complex.robertServerUrl:''}")
protected String robertServerUrl;
/**
* 综窗申报
*/
public String windowApply(ReceiveMsgInfo receiveMsgInfo) throws Exception {
logger.info(JSONUtil.toJsonStr(receiveMsgInfo));
Boolean success = receiveMsgInfo.getSuccess();
receiveMsgInfo.getFileData().forEach(item -> {
Response<ResponseBody> response = ocrApi.downloadFile(item.getFileUrl(), item.getFileName(), "0");
boolean successful = response.isSuccessful();
int code = response.code();
if (successful && code == 200) {
ResponseBody responseBody = response.body();
//上传受理平台
if (responseBody != null) {
try {
byte[] bytes = responseBody.bytes();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
});
if (success) {
ComplexWindowAbstract complexWindowAbstract = ComplexWindowAbstract.newType(receiveMsgInfo.getItemCode());
CommonData commonData = new CommonData();
commonData.setRobertServerUrl(robertServerUrl);
commonData.setFileData(receiveMsgInfo.getFileData());
complexWindowAbstract.doHandleWork(commonData);
} else {
log.info("预审事项未通过");
}
String result = "";//返回结果
boolean check = true;//事项是否查找到,默认事项已经查找到
return result;
}
}
package com.lilosoft.api.service.complexWindow;
import com.lilosoft.api.bean.receive.FileDataItem;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 通用参数
*
* @author:
* @date: 2023/7/31 15:27
*/
@Data
public class CommonData {
private String deviceLogo;
private String robertServerUrl;
private List<FileDataItem> fileData;
private Date attendanceDate;
private Long staffId;
//当前日期
private String dateStr;
}
package com.lilosoft.api.service.complexWindow;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.lilosoft.core.enums.TypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
/**
* 综合窗口抽象类
*
* @author:
* @date: 2023/7/31 15:09
*/
@Slf4j
public abstract class ComplexWindowAbstract {
public String url ="/self-device-info/login";
public String token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTnVtIjoibGoiLCJoYW5kbGVBZGRyZXNzSWQiOiIxNDE0MTYyODc4OTk3MDIwNjczIiwiZGVwdElkIjoiNTExNTAwMzEiLCJleHAiOjE2OTg2NzIzNzAsInVzZXJJZCI6IjEzMTIiLCJ3aW5kb3dJZCI6IjE1ODUwOTEyNDU4ODgzNjQ1NDUifQ.2a6N9xc2D_X2LSOpeiUPdMWvaLhOefgMr176pmC-X_k";
private String type;
abstract String getType();
public abstract void doHandleWork(CommonData commonData);
public static ComplexWindowAbstract newType(String type) {
if (type == TypeEnum.危险化学品经营许可法人变更.getValue()) {
return new WXHXPJYXKFRBG(type);
}
/* if (type == TypeEnum.固定班制.getValue()) {
//return new FixWorkAttendance(type);
return new FixWorkOtherAttendance(type);
} else if (type == TypeEnum.自由工时.getValue()) {
return new FreedomWorkAttendance(type);
}
if (type == TypeEnum.排班制.getValue()) {
return new ScheduleWorkAttendance(type);
} else {
throw new AppException(String.format("未知的类型码:%s", type));
}*/
// throw new Exception(String.format("未知的类型码:%s", type));
return null;
}
public String getToken() {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("deviceLogo","5c:1b:f4:e2");
String rest = HttpUtil.post(url, jsonObject.toJSONString());
log.info("get token==>>{}",rest);
} catch (Exception e) {
log.error("获取TOKEN异常", e);
}
return this.token;
}
public ComplexWindowAbstract(String type) {
this.type = type;
}
}
package com.lilosoft.api.service.complexWindow;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.lilosoft.api.bean.receive.FileDataItem;
import com.lilosoft.complex.Rest;
import com.lilosoft.complex.matter.model.req.*;
import com.lilosoft.complex.matter.model.rsp.AcceptRspInfo;
import com.lilosoft.complex.matter.model.rsp.LoginRspInfo;
import com.lilosoft.complex.matter.model.rsp.MatterListInfo;
import com.lilosoft.complex.matter.model.rsp.MatterRespInfo;
import com.lilosoft.complex.matter.model.rsp.matter.ChildrenItem;
import com.lilosoft.complex.matter.model.rsp.matter.MatterWorkInfo;
import com.lilosoft.complex.matter.service.IComplexMatterService;
import com.lilosoft.core.enums.TypeEnum;
import com.lilosoft.core.enums.YesNoEnum;
import lombok.extern.slf4j.Slf4j;
import okhttp3.ResponseBody;
import org.springframework.beans.BeanUtils;
import org.springframework.util.ObjectUtils;
import retrofit2.Response;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 危险化学品经营许可法人变更
*
* @author:
* @date: 2023/7/31 15:15
*/
@Slf4j
public class WXHXPJYXKFRBG extends ComplexWindowAbstract {
private IComplexMatterService complexMatterService;
public static String matterName = "从事剧毒、易制爆、汽油加油站、专用危化品仓储的企业,中央企业所属省级";
public WXHXPJYXKFRBG(String type) {
super(type);
this.complexMatterService = SpringUtil.getBean(IComplexMatterService.class);
}
@Override
String getType() {
return TypeEnum.危险化学品经营许可法人变更.getValue();
}
@Override
public void doHandleWork(CommonData commonData) {
//获取数据资源 todo
//下载附件
List<FileDataItem> fileCollect = commonData.getFileData().stream().map(item -> {
FileDataItem fileDataItem = new FileDataItem();
BeanUtils.copyProperties(item, fileDataItem);
String downloadPath = commonData.getRobertServerUrl() + item.getFileUrl();
byte[] bytes = HttpUtil.downloadBytes(downloadPath);
fileDataItem.setBytes(bytes);
return fileDataItem;
}).collect(Collectors.toList());
//通过名称查询
DeviceLoginReq deviceLoginReq = new DeviceLoginReq();
deviceLoginReq.setDeviceLogo(commonData.getDeviceLogo());
Rest<LoginRspInfo> loginRspInfoRest = complexMatterService.deviceLogin(deviceLoginReq);
if (loginRspInfoRest.getCode() == YesNoEnum.YES.getValue()) {
//设备登录成功 上传附件
fileCollect.stream().forEach(item -> {
Rest<String> uploadFileRest = complexMatterService.uploadFile(commonData.getDeviceLogo(), item.getBytes(), item.getFileName());
if (uploadFileRest.getCode() == YesNoEnum.YES.getValue()) {
item.setDownloadUrl(uploadFileRest.getData());
}
});
//通过事项查询eventId
ImplementationReq implementationReq = new ImplementationReq();
implementationReq.setImplementName(matterName);
Rest<MatterListInfo> matterRest = complexMatterService.findMatters(commonData.getDeviceLogo(), implementationReq);
if (matterRest.getCode() == YesNoEnum.YES.getValue()) {
List<MatterRespInfo> matterListInfos = matterRest.getData().getRecords();
if (!ObjectUtils.isEmpty(matterListInfos)) {
MatterRespInfo matterRespInfo = matterListInfos.get(0);
String eventId = matterRespInfo.getEventId();
String eventObjectType = matterRespInfo.getEventObjectType();
//查询办理事项情形
Rest<MatterWorkInfo> matterWorkInfoRest = complexMatterService.doWorkMatterSearch(commonData.getDeviceLogo(), eventId);
if (matterWorkInfoRest.getCode() == YesNoEnum.YES.getValue()) {
MatterWorkInfo matterWorkInfo = matterWorkInfoRest.getData();
ChildrenItem childrenItem = matterWorkInfo.getChildren().stream().filter(f -> "变更法人".equals(f.getLabel())).findFirst().orElseGet(() -> null);
if (!ObjectUtils.isEmpty(childrenItem)) {
MaterialsItem materialsItem = new MaterialsItem();
//构建受理材料附件
List<MaterialsItem> materialsItemList = childrenItem.getMaterials().stream().map(item -> {
String name = item.getName();
if (StrUtil.contains(name, "变更申请表")) {
matchUploadFile(fileCollect, materialsItem,"申请书");
}else if(StrUtil.contains(name, "安全资格证书")){
matchUploadFile(fileCollect, materialsItem,"合格证");
}else if(StrUtil.contains(name, "化学品经营许可证")){
matchUploadFile(fileCollect, materialsItem,"许可证");
}
materialsItem.setMaterialForm(item.getFromId());
materialsItem.setMaterialId(item.getId());
return materialsItem;
}).collect(Collectors.toList());
}
}
//提交响应的受理
AcceptReq acceptReq = new AcceptReq();
List<HandlingsItem> handlingsItemList = new ArrayList<>();
HandlingsItem handlingsItem = new HandlingsItem();
handlingsItem.setEventId(eventId);
handlingsItem.setObjectType(eventObjectType);
handlingsItemList.add(handlingsItem);
acceptReq.setHandlings(handlingsItemList);
Rest<AcceptRspInfo> acceptRest = complexMatterService.accept(commonData.getDeviceLogo(), acceptReq);
if (acceptRest.getCode() == YesNoEnum.YES.getValue()) {
log.info("受理成功==>{}", JSON.toJSONString(acceptRest));
}
}
}
}
}
private static void matchUploadFile(List<FileDataItem> fileCollect, MaterialsItem materialsItem,String fileName) {
FileDataItem fileDataItem = fileCollect.stream().filter(f -> StrUtil.contains(f.getFileName(), fileName)).findFirst().orElseGet(() -> null);
if(!ObjectUtils.isEmpty(fileDataItem)){
materialsItem.setUploadFileName(fileDataItem.getFileName());
materialsItem.setMaterialPath(fileDataItem.getDownloadUrl());
}
}
}
package com.lilosoft.complex;
import com.lilosoft.complex.matter.model.req.DeviceLoginReq;
import com.lilosoft.complex.matter.model.rsp.LoginRspInfo;
import com.lilosoft.complex.matter.service.IComplexMatterService;
import com.lilosoft.core.exception.AppException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ObjectUtils;
import java.util.Map;
@Slf4j
public abstract class AbstractComplexService implements IComplexMatterService {
//综窗访问地址
@Value("${complex.host:}")
protected String host;
//综窗设备编码 多个逗号分割
@Value("${complex.deviceCode:''}")
protected String deviceCode;
@Value("${hik.appSecret:''}")
protected String appSecret;
//综窗接件token deviceCode--对应tokenMap
public Map<String, String> tokenMap;
//综窗接件token
public String token;
@Override
public String getToken(String deviceLogo) {
try {
String deviceToken = tokenMap.getOrDefault(deviceLogo, "");
if (ObjectUtils.isEmpty(deviceToken)) {
DeviceLoginReq loginReq = new DeviceLoginReq();
loginReq.setDeviceLogo(deviceLogo);
Rest<LoginRspInfo> loginRspInfoRest = this.deviceLogin(loginReq);
return loginRspInfoRest.getData().getToken();
} else {
return deviceToken;
}
} catch (Exception e) {
log.error("获取TOKEN异常", e);
throw new AppException(e.getMessage());
}
}
}
package com.lilosoft.complex;
import lombok.Data;
/**
* 海康请求基础类
* @author:
* @date: 2023/4/12 17:57
*/
@Data
public class BaseReq {
}
package com.lilosoft.complex;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONPObject;
import com.alibaba.fastjson.TypeReference;
import com.lilosoft.complex.matter.model.rsp.LoginRspInfo;
import com.lilosoft.core.utils.Json;
import lombok.Data;
@Data
public class ComplexApiRest<T> {
private T result;
private Integer code;
private String message;
private Boolean success;
private Long timestamp;
public static void main(String[] args) {
String str="{\n" +
" \"success\": true,\n" +
" \"message\": \"操作成功!\",\n" +
" \"code\": 200,\n" +
" \"result\": {\n" +
" \"token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTnVtIjoiZ29uZ2ppIiwic2VsZkRldmljZUlkIjoiNiIsImhhbmRsZUFkZHJlc3NJZCI6IjE0OTk2NTA0ODgyMzEwNzE3NDYiLCJleHAiOjE2OTUyMjk5MTksInVzZXJJZCI6IjExMTIiLCJ3aW5kb3dJZCI6IjE0OTk2NTA1NTM0MTA1NTU5MDYifQ.ADZQR8AIo8OHtuUJBskBx3w2yaqHHsQLMSBamYvf6YE\",\n" +
" \"sysUser\": {\n" +
" \"createBy\": 1,\n" +
" \"createTime\": \"2021-08-16 16:38:17\",\n" +
" \"updateBy\": null,\n" +
" \"updateTime\": \"2023-08-12 10:40:34\",\n" +
" \"delFlag\": \"N\",\n" +
" \"userId\": 1112,\n" +
" \"userName\": \"万青青\",\n" +
" \"sex\": \"男\",\n" +
" \"loginName\": null,\n" +
" \"userNumber\": \"gongji\",\n" +
" \"dept\": null,\n" +
" \"deptId\": 306,\n" +
" \"email\": \"56462@qq.com\",\n" +
" \"address\": null,\n" +
" \"idCard\": \"522121199208022252\",\n" +
" \"phoneNumber\": \"18888888888\",\n" +
" \"workPhone\": \"17778445521\",\n" +
" \"avatar\": \"/mnt/jpg/2023-08-12/3bf75fd4301da7469c83e8e35e233c65.jpg\",\n" +
" \"startNumber\": null,\n" +
" \"userType\": null,\n" +
" \"password\": \"632a02caecc0bb7b\",\n" +
" \"passwordState\": \"Y\",\n" +
" \"salt\": \"ZGimxeDr\",\n" +
" \"status\": \"Y\",\n" +
" \"remark\": \"\",\n" +
" \"areaCode\": \"510100000000\",\n" +
" \"hometown\": null,\n" +
" \"windowId\": null,\n" +
" \"centerUserId\": \"123456789\",\n" +
" \"value\": null,\n" +
" \"label\": null,\n" +
" \"dkUserId\": null,\n" +
" \"dkUnionId\": null,\n" +
" \"changePwTime\": \"2023-08-25 10:03:46\",\n" +
" \"sysRole\": null,\n" +
" \"isWaiter\": \"N\"\n" +
" },\n" +
" \"selfDeviceInfo\": {\n" +
" \"selfDeviceId\": \"6\",\n" +
" \"deviceLogo\": \"uutest\",\n" +
" \"note\": \"张远海\",\n" +
" \"userId\": \"1112\",\n" +
" \"windowId\": \"1499650553410555906\",\n" +
" \"createBy\": \"1\",\n" +
" \"createTime\": \"2023-08-25 15:11:41\",\n" +
" \"updateBy\": null,\n" +
" \"updateTime\": null,\n" +
" \"delFlag\": \"N\",\n" +
" \"coordinate\": \"104.090953,30.767351\",\n" +
" \"ticketTitle\": null,\n" +
" \"tips\": null,\n" +
" \"workHours\": null,\n" +
" \"telephone\": \"9528\",\n" +
" \"floorId\": \"1499650525505851393\",\n" +
" \"handleAddressId\": \"1499650488231071746\"\n" +
" }\n" +
" },\n" +
" \"timestamp\": 1695193919663\n" +
"}\n";
ComplexApiRest<LoginRspInfo> loginRspInfoComplexApiRest = JSON.parseObject(str, new TypeReference<ComplexApiRest<LoginRspInfo>>() {
});
System.out.println(JSON.toJSONString(loginRspInfoComplexApiRest));
}
}
package com.lilosoft.complex;
/**
* 综窗基础接口类
* @author: zxfei
* @date: 2023/10/31 11:36
*/
public interface IComplexService {
String getToken(String deviceLogo);
}
package com.lilosoft.complex;
public class Rest<T> {
/**
* 成功
*/
public static final int SUCCESS = 1;
/**
* 失败
*/
public static final int FAIL = -1;
private T data;
private Integer code;
private String msg;
private Object dict;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getDict() {
return dict;
}
public void setDict(Object dict) {
this.dict = dict;
}
public static <T> Rest<T> ok() {
return restResult(null, SUCCESS, "操作成功");
}
public static <T> Rest<T> ok(T data) {
return restResult(data, SUCCESS, "操作成功");
}
public static <T> Rest<T> ok(String msg) {
return restResult(null, SUCCESS, msg);
}
public static <T> Rest<T> ok(String msg, T data) {
return restResult(data, SUCCESS, msg);
}
public static <T> Rest<T> fail() {
return restResult(null, FAIL, "操作失败");
}
public static <T> Rest<T> fail(String msg) {
return restResult(null, FAIL, msg);
}
public static <T> Rest<T> fail(T data) {
return restResult(data, FAIL, "操作失败");
}
public static <T> Rest<T> fail(String msg, T data) {
return restResult(data, FAIL, msg);
}
public static <T> Rest<T> fail(int code, String msg) {
return restResult(null, code, msg);
}
private static <T> Rest<T> restResult(T data, int code, String msg) {
Rest<T> rest = new Rest<>();
rest.setCode(code);
rest.setData(data);
rest.setMsg(msg);
return rest;
}
}
package com.lilosoft.complex.matter.model.req;
import java.util.List;
import lombok.Data;
@Data
public class AcceptReq{
private ApplicantLeagal applicantLegal;
private Object agency;
private List<String> itemsIds;
private List<MaterialsItem> materials;
private String isStaging;
private ApplicantPersonal applicantPersonal;
private List<HandlingsItem> handlings;
private InfoMap infoMap;
private Object legalProxy;
private Object thingId;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.req;
import lombok.Data;
@Data
public class ApplicantLeagal {
private String phone;
private String applicantSex;
private String documentId;
private String applicantName;
private String applicantIdNumber;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.req;
import lombok.Data;
@Data
public class ApplicantPersonal{
private String phone;
private String applicantSex;
private String documentId;
private String applicantName;
private String applicantIdNumber;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.req;
import lombok.Data;
@Data
public class DeviceLoginReq {
private String deviceLogo;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.req;
import lombok.Data;
@Data
public class HandlingsItem{
private String eventId;
private String objectType;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.req;
import lombok.Data;
/**
* 事项查询
*
* @author: zxfei
* @date: 2023/10/30 16:50
*/
@Data
public class ImplementationReq {
private Integer currentPage;
private Integer pageSize;
private String eventObjectType;
private String crossFlag;
private String implementName;
}
package com.lilosoft.complex.matter.model.req;
import lombok.Data;
@Data
public class InfoMap{
private String sjrdz;
private String rqkdata;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.req;
import lombok.Data;
@Data
public class MaterialsItem{
private String uploadFileName;
private String materialForm;
private String materialPath;
private String materialId;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.req;
import lombok.Data;
@Data
public class MatterReq {
//事件id
private String eventIds;
}
package com.lilosoft.complex.matter.model.req;
import lombok.Data;
import java.io.File;
@Data
public class UploadFileReq {
private String conversionImage = "Y";
private File file;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.rsp;
import java.util.List;
import lombok.Data;
@Data
public class AcceptRspInfo{
private Object handler;
private Object deptName;
private Object btsName;
private String handleAddressId;
private String isOneThing;
private Object cycleAndSteps;
private Object endDate;
private Object functionRole;
private Object printCorrectionReceipt;
private Object handleDeptName;
private Object createUserName;
private Object handlerName;
private List<Object> areas;
private String acceptAreaCode;
private Object tokenUser;
private Object businessTacheName;
private Object floorId;
private String implementName;
private Object stateName;
private Object areaName;
private String acceptObjectType;
private boolean orderByLimitTime;
private String isTongBan;
private String state;
private String applicantId;
private String unifyCode;
private Object deptId;
private Object isIssue;
private Object suspendSecond;
private Object eventType;
private Object packages;
private Object waitHandlingSearch;
private Object replyPrintLicence;
private Object eventIds;
private Object applicantIdNumber;
private Object extend;
private Object itemId;
private Object registerAddress;
private Object hotNum;
private String phone;
private String sourceType;
private Object handlingIds;
private String doSource;
private Object infoMap;
private Object applyCode;
private Object situationItems;
private int btsOrder;
private String startDate;
private Object printNoAccept;
private Object timeLimitState;
private String businessTacheId;
private String submitType;
private Object btsIds;
private Object eventIdAndTacheIds;
private Object timingStartTime;
private String acceptIsPrint;
private Object thingHandlingId;
private Object conditionTime;
private Object situationId;
private Object stepResult;
private Object printFinishBook;
private String delFlag;
private Object auditState;
private Object search;
private Object rightsDeptName;
private Object commAddress;
private Object handlerPhone;
private String isDissolve;
private String handlingId;
private Object situations;
private Object printUpload;
private Object printAccept;
private Object updateTime;
private String currentArea;
private String userId;
private Object applicant;
private Object thingId;
private String legalPersonId;
private Object dealAreaCode;
private Object rightsDeptId;
private String createTime;
private String ecId;
private String handlingCode;
private Object situationItemIds;
private Object eventTypeName;
private Object warningTimeAll;
private int num;
private String implementCoding;
private Object acceptDeptName;
private Object limitDay;
private String businessTacheCode;
private Object selectSituationItems;
private String eventObjectType;
private Object handlingUseTime;
private Object situationIds;
private int handlingVersion;
private Object processName;
private Object windowName;
private Object deptIds;
private Object dealAreaName;
private String endIsPrint;
private String eventId;
private Object acceptDeptId;
private HandleAddress handleAddress;
private String applicantName;
private Object printLicence;
private Object acceptAreaName;
private Object eventHandleKind;
private String windowId;
private Object areaCode;
private Object materials;
private Object windowUserId;
private Object timingEndTime;
private Object ecName;
private Object areaLinkCode;
private Object beyondTime;
private Object note;
private List<Object> areaLinks;
private Object auditAreaCode;
private String btsId;
private Object cycleAndStep;
private Object stepId;
private Object tenantCode;
private Object states;
private Object tenantName;
private Object updateBy;
private String handlerId;
private Object legalPerson;
private Object eventImplementation;
private Object warningTime;
private Object areaOrder;
private Object eventIdAndTacheId;
private Object handleDept;
private String resultsHandlingType;
private Object isStaging;
private Object thingName;
private Object printDocument;
private Object userName;
private Object timeLimit;
private Object areaCodeList;
private Object oneThingExampleId;
private String createBy;
private Object systemCode;
private Object beyondTimeAll;
private Object isTimeout;
private Object bjlx;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.rsp;
import java.util.List;
import lombok.Data;
@Data
public class HandleAddress{
private String handleAddressDetail;
private int isCenter;
private List<String> callNotification;
private Object eventId;
private String handleAddressId;
private int distance;
private double latitude;
private int userId;
private String areaCode;
private String queueNumberRule;
private String areaName;
private String areaLevel;
private String state;
private String stateDate;
private int timeCost;
private int kilometre;
private String queuingRules;
private double longitude;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.rsp;
import lombok.Data;
@Data
public class LoginRspInfo{
private SelfDeviceInfo selfDeviceInfo;
private SysUser sysUser;
private String token;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.rsp;
import lombok.Data;
import java.util.List;
@Data
public class MatterListInfo {
private List<MatterRespInfo> records;
}
package com.lilosoft.complex.matter.model.rsp;
import lombok.Data;
@Data
public class MatterRespInfo{
private Object factSheet;
private Object sourceId;
private String deptName;
private Object endDate;
private String onlineReservation;
private Object afternoonStartTime;
private String implementCoding;
private Object runNumbers;
private String typeIdFr;
private String eventObjectType;
private String crossFlag;
private String selfServiceTerminals;
private Object dfjha;
private String implementName;
private Object electronicSealPath;
private Object classificationDfZrr;
private String depthId;
private Object afternoonEndTime;
private String state;
private String handlingItemCode;
private String logisticeExpress;
private Object limitNum;
private String eventId;
private int useId;
private Object legalLimitTime;
private int deptId;
private String eventType;
private String eventHandleKind;
private Object extend;
private Object contrastRatio;
private Object xsfs;
private String typeIdZrr;
private String areaCode;
private Object hotNum;
private Object thingEventId;
private Object promiseLimitTime;
private Object sourceType;
private Object classificationDfFr;
private String eventHandleKindDesc;
private Object formData;
private Object checkInExplanation;
private Object accessGrant;
private Object startDate;
private Object dfjhaType;
private Object integrationMatterName;
private Object integrationInputName;
private Object includeIntegration;
private Object remark;
private Object thingSituation;
private Object delFlag;
private Object morningEndTime;
private Object isApproval;
private Object localAndIntegrationIdentical;
private Object fullOnlineHandle;
private int businessFlowId;
private String parentEventId;
private Object assHandle;
private String onlinePayment;
private Object requestType;
private String resultsHandlingType;
private String enterHall;
private Object onlineHandleSystem;
private Object eventTypeDetail;
private Object optionalWeek;
private Object eventCharacterMap;
private Object morningStartTime;
private Object thingId;
private Object schedulingRules;
private Object specifyTime;
private Object checkIn;
private String ecId;
private Object eventTypeName;
private String networkOffice;
private Object settledFilePath;
private String bjlx;
private String stateDate;
private Object unitOfLimitTime;
private Object resultsDefines;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.rsp;
import lombok.Data;
@Data
public class SelfDeviceInfo{
private String note;
private Object ticketTitle;
private String selfDeviceId;
private String handleAddressId;
private String coordinate;
private Object workHours;
private Object updateTime;
private String telephone;
private String delFlag;
private String deviceLogo;
private String userId;
private Object tips;
private String windowId;
private String floorId;
private String createBy;
private String createTime;
private Object updateBy;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.rsp;
import lombok.Data;
@Data
public class SysUser{
private Object sysRole;
private Object startNumber;
private String idCard;
private String remark;
private String delFlag;
private String centerUserId;
private String password;
private Object updateBy;
private Object loginName;
private String userNumber;
private Object value;
private String email;
private Object hometown;
private Object address;
private String salt;
private String sex;
private int deptId;
private String updateTime;
private String isWaiter;
private Object dept;
private String avatar;
private Object label;
private String userName;
private int userId;
private Object dkUserId;
private Object windowId;
private int createBy;
private String areaCode;
private String phoneNumber;
private String createTime;
private String passwordState;
private Object dkUnionId;
private String changePwTime;
private String workPhone;
private Object userType;
private String status;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.rsp.matter;
import java.util.List;
import lombok.Data;
@Data
public class ChildrenItem{
private String situationItemId;
private List<MaterialsItem> materials;
private String situationDefineId;
private String situationItemName;
private String label;
private String id;
private String situationItemType;
private String type;
private String parentId;
private String key;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.rsp.matter;
import lombok.Data;
@Data
public class MaterialsItem{
private String name;
private String pid;
private int paperCopies;
private String id;
private String label;
private String type;
private String fromId;
private String parentId;
private String key;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.rsp.matter;
import java.util.List;
import lombok.Data;
@Data
public class MatterWorkInfo{
private List<ChildrenItem> children;
private String name;
private String id;
private String label;
private String type;
private String key;
}
\ No newline at end of file
package com.lilosoft.complex.matter.model.rsp.work;
import java.util.List;
import lombok.Data;
@Data
public class WorkInfo{
private String fieldGenerateRules;
private String commonCharacterName;
private Object defaultValue;
private String hcFillRule;
private String defaultValueRules;
private Object xpath;
private Object regularName;
private String handlingCharacterPackage;
private int hcOrder;
private int elCol;
private String state;
private Object commonCharacterComment;
private Object parentValue;
private String commonCharacterCode;
private String commonCharacterId;
private String commonCharacterType;
private int userId;
private String assType;
private Object parentId;
private String regularId;
private String tacheStep;
private Object checkTrictly;
private String handlingCharacterTemplateId;
private Object parentMovement;
private Object regularVal;
private String allowModify;
private String stateDate;
private int commonCharacterLength;
private List<Object> items;
private String dataInterfaceType;
}
\ No newline at end of file
package com.lilosoft.complex.matter.service;
import com.lilosoft.complex.IComplexService;
import com.lilosoft.complex.Rest;
import com.lilosoft.complex.matter.model.req.AcceptReq;
import com.lilosoft.complex.matter.model.req.ImplementationReq;
import com.lilosoft.complex.matter.model.req.DeviceLoginReq;
import com.lilosoft.complex.matter.model.rsp.AcceptRspInfo;
import com.lilosoft.complex.matter.model.rsp.LoginRspInfo;
import com.lilosoft.complex.matter.model.rsp.MatterListInfo;
import com.lilosoft.complex.matter.model.rsp.MatterRespInfo;
import com.lilosoft.complex.matter.model.rsp.matter.MatterWorkInfo;
import com.lilosoft.complex.matter.model.rsp.work.WorkInfo;
import java.util.List;
/**
* 综合窗口业务处理类
*
* @author: zxfei
* @date: 2023/10/30 14:52
*/
public interface IComplexMatterService extends IComplexService {
/**
* 自助设备登录
*
* @param deviceLoginReq
* @return
*/
Rest<LoginRspInfo> deviceLogin(DeviceLoginReq deviceLoginReq);
/**
* 附件上传
*
* @param bytes
* @param fileName
* @return
*/
Rest<String> uploadFile(String deviceLogo,byte[] bytes, String fileName);
/**
* 自助设备接件
*
* @param acceptReq
* @return
*/
Rest<AcceptRspInfo> accept(String deviceLogo,AcceptReq acceptReq);
/**
* 查询可受理事项
*
* @param implementationReq
* @return
*/
Rest<MatterListInfo> findMatters(String deviceLogo, ImplementationReq implementationReq);
/**
* 查询办理事项情形
*
* @param eventIds
* @return
*/
Rest<MatterWorkInfo> doWorkMatterSearch(String deviceLogo, String eventIds);
/**
* 获取办件要素
* @param deviceLogo
* @param eventIds
* @return
*/
Rest<WorkInfo> getWorkMatter(String deviceLogo, String eventIds);
}
package com.lilosoft.complex.matter.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.lilosoft.complex.AbstractComplexService;
import com.lilosoft.complex.ComplexApiRest;
import com.lilosoft.complex.Rest;
import com.lilosoft.complex.matter.model.req.AcceptReq;
import com.lilosoft.complex.matter.model.req.ImplementationReq;
import com.lilosoft.complex.matter.model.req.DeviceLoginReq;
import com.lilosoft.complex.matter.model.rsp.AcceptRspInfo;
import com.lilosoft.complex.matter.model.rsp.LoginRspInfo;
import com.lilosoft.complex.matter.model.rsp.MatterListInfo;
import com.lilosoft.complex.matter.model.rsp.MatterRespInfo;
import com.lilosoft.complex.matter.model.rsp.matter.MatterWorkInfo;
import com.lilosoft.complex.matter.model.rsp.work.WorkInfo;
import com.lilosoft.complex.matter.service.IComplexMatterService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 综合窗口业务实现类
*
* @author: zxfei
* @date: 2023/10/30 14:53
*/
@Service("complexMatterService")
@Slf4j
public class ComplexMatterServiceImpl extends AbstractComplexService implements IComplexMatterService {
//token有效期 10小时
@Override
public Rest<LoginRspInfo> deviceLogin(DeviceLoginReq loginReq) {
String deviceLoginApi = host + "self-device-info/login";
String rest = HttpUtil.post(deviceLoginApi, JSON.toJSONString(loginReq));
ComplexApiRest<LoginRspInfo> complexApiRest = JSON.parseObject(rest, new TypeReference<ComplexApiRest<LoginRspInfo>>() {
});
if (complexApiRest.getCode() == 200) {
//更新token
String deviceLoginToken = complexApiRest.getResult().getToken();
String deviceLogo = complexApiRest.getResult().getSelfDeviceInfo().getDeviceLogo();
this.tokenMap.put(deviceLogo, deviceLoginToken);
return Rest.ok(complexApiRest.getMessage(), complexApiRest.getResult());
}
return Rest.fail(complexApiRest.getMessage());
}
@Override
public Rest<String> uploadFile(String deviceLogo, byte[] bytes, String fileName) {
String uploadApi = host + "common/uploadFileToFtp?conversionImage=Y";
HttpRequest request = HttpRequest.post(uploadApi);
String deviceToken = checkToken(deviceLogo);
request.form("file", bytes, fileName);
String uploadRest = request.header("X-Access-Token", deviceToken).execute().body();
ComplexApiRest<String> complexApiRest = JSON.parseObject(uploadRest, new TypeReference<ComplexApiRest<String>>() {
});
if (complexApiRest.getCode() == 200) {
return Rest.ok(complexApiRest.getMessage(), complexApiRest.getResult());
}
return Rest.fail(complexApiRest.getMessage());
}
@Override
public Rest<AcceptRspInfo> accept(String deviceLogo, AcceptReq acceptReq) {
String deviceLoginApi = host + "self-device-info/acceptHandling";
String deviceToken = checkToken(deviceLogo);
String rest = HttpUtil.createPost(deviceLoginApi)
.header("X-Access-Token", deviceToken)
.body(JSON.toJSONString(acceptReq))
.execute().body();
ComplexApiRest<AcceptRspInfo> complexApiRest = JSON.parseObject(rest, new TypeReference<ComplexApiRest<AcceptRspInfo>>() {
});
if (complexApiRest.getCode() == 200) {
return Rest.ok(complexApiRest.getMessage(), complexApiRest.getResult());
}
return Rest.fail(complexApiRest.getMessage());
}
@Override
public Rest<MatterListInfo> findMatters(String deviceLogo, ImplementationReq implementationReq) {
String mattersApi = host + "event-implementation/list";
Map<String, String> paramMap = new HashMap<>();
// 将Map中的属性值转为字符串
for (Map.Entry<String, Object> entry : BeanUtil.beanToMap(implementationReq, false, true).entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
String stringValue = String.valueOf(value);
paramMap.put(key, stringValue);
}
String deviceToken = checkToken(deviceLogo);
String rest = HttpUtil.createGet(mattersApi)
.header("X-Access-Token", deviceToken)
.headerMap(paramMap, true)
.execute().body();
ComplexApiRest<MatterListInfo> complexApiRest = JSON.parseObject(rest, new TypeReference<ComplexApiRest<MatterListInfo>>() {
});
if (complexApiRest.getCode() == 200) {
return Rest.ok(complexApiRest.getMessage(), complexApiRest.getResult());
}
return Rest.fail(complexApiRest.getMessage());
}
@Override
public Rest<MatterWorkInfo> doWorkMatterSearch(String deviceLogo, String eventIds) {
String mattersApi = host + "bus-situation-material/getSituationMaterialTreeByEventIds";
Map<String, String> paramMap = new HashMap<>();
paramMap.put("eventIds", eventIds);
String deviceToken = checkToken(deviceLogo);
String rest = HttpUtil.createGet(mattersApi)
.header("X-Access-Token", deviceToken)
.headerMap(paramMap, true)
.execute().body();
ComplexApiRest<MatterWorkInfo> complexApiRest = JSON.parseObject(rest, new TypeReference<ComplexApiRest<MatterWorkInfo>>() {
});
if (complexApiRest.getCode() == 200) {
return Rest.ok(complexApiRest.getMessage(), complexApiRest.getResult());
}
return Rest.fail(complexApiRest.getMessage());
}
@Override
public Rest<WorkInfo> getWorkMatter(String deviceLogo, String eventIds) {
String mattersApi = host + "event-implementation/getDynamicFormByEventIds";
ArrayList<String> list = new ArrayList<>();
list.add(eventIds);
String deviceToken = checkToken(deviceLogo);
String rest = HttpUtil.createPost(mattersApi)
.header("X-Access-Token", deviceToken)
.body(JSON.toJSONString(list))
.execute().body();
ComplexApiRest<WorkInfo> complexApiRest = JSON.parseObject(rest, new TypeReference<ComplexApiRest<WorkInfo>>() {
});
if (complexApiRest.getCode() == 200) {
return Rest.ok(complexApiRest.getMessage(), complexApiRest.getResult());
}
return Rest.fail(complexApiRest.getMessage());
}
private String checkToken(String deviceLogo) {
String deviceToken = tokenMap.getOrDefault(deviceLogo, "");
if (ObjectUtils.isEmpty(deviceToken)) {
deviceToken = getToken(deviceLogo);
}
return deviceToken;
}
public static void main(String[] args) {
// Define the URL where you want to upload the file
String uploadUrl = "http://example.com/upload";
// Define the path of the file you want to upload
String filePath = "/path/to/your/file.txt";
byte[] bytes = "111".getBytes();
// Create an HTTP request
HttpRequest request = HttpRequest.post(uploadUrl);
// Attach the file to the request
request.form("file", bytes, "1.png");
// Send the request and get the response
HttpResponse response = request.execute();
String body = request.execute().body();
// Check the response status
int status = response.getStatus();
if (status == 200) {
System.out.println("File uploaded successfully!");
} else {
System.out.println("File upload failed. Status code: " + status);
}
}
}
package com.lilosoft.core.enums;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 综窗事项处理类
*
* @author zxfei
*/
public enum TypeEnum {
危险化学品经营许可法人变更("wxhxpjyxkfrbg20231007", "危险化学品经营许可法人变更"),
;
private String value;
private String desc;
TypeEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static TypeEnum getByValue(String value) {
for (TypeEnum typeEnum : TypeEnum.values()) {
if (typeEnum.getValue() == value) {
return typeEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (TypeEnum item : TypeEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.lilosoft.core.enums;
import java.util.LinkedHashMap;
import java.util.Map;
public enum YesNoEnum {
NO(0, "否"),
YES(1, "是");
private int value;
private String desc;
YesNoEnum(int value, String desc) {
this.value = value;
this.desc = desc;
}
public int getValue() {
return this.value;
}
public String getDesc() {
return desc;
}
public static YesNoEnum getByValue(int value) {
for (YesNoEnum YesNoEnum : YesNoEnum.values()) {
if (YesNoEnum.getValue() == value) {
return YesNoEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(int... eItem) {
Map<String, String> resultMap = new LinkedHashMap<String, String>();
for (YesNoEnum item : YesNoEnum.values()) {
try {
boolean hasE = false;
for (int e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
package com.lilosoft.core.exception;
public class AppException extends RuntimeException {
private static final long serialVersionUID = 3770580067312032700L;
private int code = 99999;
private String message = "";
public AppException() {
}
public AppException(String message) {
this(-1, message);
}
public AppException(int code) {
this.code = code;
}
public AppException(int code, String message) {
super(message);
this.code = code;
this.message = message;
}
public AppException(Throwable e) {
super(e);
}
public AppException(String message, Throwable e) {
super(message, e);
this.message = message;
}
public int getCode() {
return this.code;
}
public void setCode(int code) {
this.code = code;
}
@Override
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
}
......@@ -2,9 +2,10 @@
api:
xss-open: true #是否开启xss跨站脚本攻击防护支持 (true/false)
requestLimit: 30 #接口每秒请求限制
baseUrl: @profiles.baseUrl@ #审批系统地址
baseUrl: @profiles.baseUrl@ #预审系统地址
ocrUrl: @profiles.ocrUrl@ #资料预审接口地址
apiUrl: @profiles.apiUrl@ #资料预审配置接口地址
robertServerUrl: @profiles.robertServerUrl@ #机器人预审地址
mq: @profiles.mq@ #mq监听队列名称
scheduled: #定时任务推送
monitorCron: 0 0/5 * * * ?
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment