Browse Source

开发完成

master
zhouhaibin 8 months ago
parent
commit
8f3817a06e
  1. 4
      pom.xml
  2. 122
      src/main/java/com/example/guoyan/config/RestTemplateConfig.java
  3. 47
      src/main/java/com/example/guoyan/controller/TestController.java
  4. 2
      src/main/java/com/example/guoyan/entity/KpssProcessNode6IdInfo.java
  5. 5
      src/main/java/com/example/guoyan/mapper/OtherMapper.java
  6. 320
      src/main/java/com/example/guoyan/scheduled/ProcessScheduled.java
  7. 3
      src/main/resources/application-dev.yml
  8. 22
      src/main/resources/mapper/OtherMapper.xml
  9. 14
      src/main/resources/mapper/SendKpxxMapper.xml

4
pom.xml

@ -14,7 +14,7 @@
<name>GuoYan</name>
<description>GuoYan</description>
<properties>
<java.version>11</java.version>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
@ -71,7 +71,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<!-- <version>1.18.26</version>-->
</dependency>
<!-- 德鲁伊 连接池 https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>

122
src/main/java/com/example/guoyan/config/RestTemplateConfig.java

@ -29,12 +29,12 @@ import org.springframework.util.StreamUtils;
import org.springframework.web.client.RestTemplate;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
@Configuration
@ -113,76 +113,70 @@ public class RestTemplateConfig {
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder
.requestFactory(() -> new HttpComponentsClientHttpRequestFactory(httpClient()))
.interceptors(new CustomClientHttpRequestInterceptor())
.build();
RestTemplate restTemplate = new RestTemplate();
restTemplate.setInterceptors(Collections.singletonList(new LoggingClientHttpRequestInterceptor()));
//restTemplate.getInterceptors().add();
return restTemplate;
}
@Slf4j
static class CustomClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
@Override
@NonNull
public ClientHttpResponse intercept(HttpRequest request, @NonNull byte[] bytes, @NonNull ClientHttpRequestExecution execution) throws IOException {
log.info("HTTP Method: {}, URI: {}, Headers: {}", request.getMethod(), request.getURI(), request.getHeaders());
request.getMethod();
if (request.getMethod().equals(HttpMethod.POST)) {
log.info("HTTP body: {}", new String(bytes, StandardCharsets.UTF_8));
}
ClientHttpResponse response = execution.execute(request, bytes);
ClientHttpResponse responseWrapper = new BufferingClientHttpResponseWrapper(response);
String body = StreamUtils.copyToString(responseWrapper.getBody(), StandardCharsets.UTF_8);
log.info("RESPONSE body: {}", body);
return responseWrapper;
}
}
static class BufferingClientHttpResponseWrapper implements ClientHttpResponse {
private final ClientHttpResponse response;
private byte[] body;
BufferingClientHttpResponseWrapper(ClientHttpResponse response) {
this.response = response;
}
// @NonNull
// public HttpStatusCode getStatusCode() throws IOException {
// return this.response.getStatusCode();
// }
@Override
public HttpStatus getStatusCode() throws IOException {
return this.response.getStatusCode();
}
class LoggingClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
@Override
public int getRawStatusCode() throws IOException {
return this.response.getRawStatusCode();
}
@NonNull
public String getStatusText() throws IOException {
return this.response.getStatusText();
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
traceRequest(request, body);
ClientHttpResponse response = execution.execute(request, body);
// response = (ClientHttpResponse) Proxy.newProxyInstance(response.getClass().getClassLoader(), new Class[]{ClientHttpResponse.class}, new ClientHttpResponseHandler(response));
traceResponse(response);
return response;
}
@NonNull
public HttpHeaders getHeaders() {
return this.response.getHeaders();
private void traceRequest(HttpRequest request, byte[] body) throws IOException {
log.info("===========================request begin================================================");
log.info("URI : {}", request.getURI());
log.info("Method : {}", request.getMethod());
log.info("Headers : {}", request.getHeaders());
log.info("Request body: {}", new String(body, "UTF-8"));
log.info("==========================request end================================================");
}
@NonNull
public InputStream getBody() throws IOException {
if (this.body == null) {
this.body = StreamUtils.copyToByteArray(this.response.getBody());
private void traceResponse(ClientHttpResponse response) throws IOException {
StringBuilder inputStringBuilder = new StringBuilder();
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getBody(), StandardCharsets.UTF_8))) {
String line = bufferedReader.readLine();
while (line != null) {
inputStringBuilder.append(line);
inputStringBuilder.append('\n');
line = bufferedReader.readLine();
}
}
return new ByteArrayInputStream(this.body);
log.info("============================response begin==========================================");
log.info("Status code : {}", response.getStatusCode());
log.info("Status text : {}", response.getStatusText());
log.info("Headers : {}", response.getHeaders());
log.info("Response body: {}", inputStringBuilder.toString());//WARNING: comment out in production to improve performance
log.info("=======================response end=================================================");
}
public void close() {
this.response.close();
}
// private static class ClientHttpResponseHandler implements InvocationHandler {
// private static final String methodName = "getBody";
// private ClientHttpResponse clientHttpResponse;
// private byte[] body;
//
// ClientHttpResponseHandler(ClientHttpResponse clientHttpResponse) {
// this.clientHttpResponse = clientHttpResponse;
// }
//
// @Override
// public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// if (StrUtil.equals(methodName, method.getName())) {
// if (Objects.isNull(this.body)) {
// this.body = StreamUtils.copyToByteArray(this.clientHttpResponse.getBody());
// }
// return new ByteArrayInputStream(this.body == null ? new byte[0] : this.body);
// }
// return method.invoke(this.clientHttpResponse, args);
// }
// }
}

47
src/main/java/com/example/guoyan/controller/TestController.java

@ -74,29 +74,30 @@ public class TestController {
headers.set("Authorization", data);
sendKpxxList.forEach(item->{
Integer interfaceType = item.getInterfaceType();//类型字段
if(interfaceType==0){//开票信息有关的
//判断是否过了节点5,通过流程id,节点
String requestid = item.getRequestid();
String kpssProcessNode5="2c9adae478fdbe15017906f93ec90265";
List<HashMap<String, String>> selectProcessNo5IsSubmit = otherMapper.selectProcessNo5IsSubmit(requestid, kpssProcessNode5);
if (selectProcessNo5IsSubmit.size()>0){//存在
processScheduled.senKpxxToYunPingtai(item,headers);
}
//开票确认
}else if (interfaceType==1){
processScheduled.sendKpqrToYunPingtai(item,headers);
//开票确认收入
}else if(interfaceType==2){
processScheduled.sendKpqrsrToYunPingtai(item,headers);
}else if (interfaceType==3){
processScheduled.sendKpqrdzToYunPingtai(item,headers);
}else {
log.info("未知编号:"+interfaceType);
}
});
// sendKpxxList.forEach(item->{
// Integer interfaceType = item.getInterfaceType();//类型字段
// if(interfaceType==0){//开票信息有关的
// //判断是否过了节点5,通过流程id,节点
// String requestid = item.getRequestid();
// String kpssProcessNode5="2c9adae478fdbe15017906f93ec90265";
// List<HashMap<String, String>> selectProcessNo5IsSubmit = otherMapper.selectProcessNo5IsSubmit(requestid, kpssProcessNode5);
// if (selectProcessNo5IsSubmit.size()>0){//存在
// processScheduled.senKpxxToYunPingtai(item,headers);
// }
// //开票确认
// }else if (interfaceType==1){
// processScheduled.sendKpqrToYunPingtai(item,headers);
// //开票确认收入
// }else if(interfaceType==2){
// processScheduled.sendKpqrsrToYunPingtai(item,headers);
// }else if (interfaceType==3){
// processScheduled.sendKpqrdzToYunPingtai(item,headers);
// }else {
// log.info("未知编号:"+interfaceType);
// }
// });
// processScheduled.sendKpCancelToYPT(headers);
processScheduled.queryInvoicingApprovalStatus(headers);
return Result.success("成功");
}

2
src/main/java/com/example/guoyan/entity/KpssProcessNode6IdInfo.java

@ -21,5 +21,7 @@ public class KpssProcessNode6IdInfo {
private String nextAllowStaffids;
@Value("${kpssProcessNode6IdInfo.nextStepOperid}")
private String nextStepOperid;
@Value("${kpssProcessNode6IdInfo.friststepid}")
private String friststepid;
}

5
src/main/java/com/example/guoyan/mapper/OtherMapper.java

@ -34,4 +34,9 @@ public interface OtherMapper extends BaseMapper<Object> {
HashMap<String,String> selectScKpsqsp_yptbh_Byreqid(@Param("requestid") String id);
List<HashMap<String,String>> selectProcessNo5IsSubmit(@Param("reqid") String id,@Param("setpid") String setpid);
List<HashMap<String,String>> selectSchtqxByflag();
void updateSchtqx_Byid(@Param("id") String id);
void updateRequeststatusBack(HashMap<String,String> map);
void delPermissionuserBack(HashMap<String,String> map);
}

320
src/main/java/com/example/guoyan/scheduled/ProcessScheduled.java

@ -1,11 +1,14 @@
package com.example.guoyan.scheduled;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.example.guoyan.entity.*;
import com.example.guoyan.mapper.*;
import com.example.guoyan.response.ResponseBeanForBeiJing;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
@ -19,10 +22,12 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.io.File;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.spi.CalendarDataProvider;
@Component
@Slf4j
@ -72,8 +77,12 @@ public class ProcessScheduled {
private String uploadFileUrl;
@Value("${ypt.incomeUrl}")
private String incomeUrl;
@Value("${ypt.accountUrl}")
private String accountUrl;
@Value("${ypt.InvoicingApprovalStatusUrl}")
private String InvoicingApprovalStatusUrl;
@Value("${ypt.cancelPrjetcUrl}")
private String cancelPrjetcUrl;
@Autowired
private KpssProcessNode6IdInfo kpssProcessNode6IdInfo;
/**
@ -266,35 +275,13 @@ public class ProcessScheduled {
@Transactional()
public void senKpxxToYunPingtai(SendKpxx sendKpxx, HttpHeaders headers){
//新增
String[] evidenceIds = sendKpxx.getEvidenceId().split(",");//获取文件id组
String evidenceid= sendfpfielUpdown(headers,evidenceIds);//上传文件信息
if(evidenceid.length()>0){
evidenceid=evidenceid.substring(0,evidenceid.length()-1);
}
if(sendKpxx.getOperatetype()==0){
sendKpxx.setInvoiceNo(null);
String[] evidenceIds = sendKpxx.getEvidenceId().split(",");//获取文件id组
String evidenceid= "";
for (String id:evidenceIds) {
//查询
HashMap<String, String> fileMap = otherMapper.selectFileById(id);
//String filePath = fileMap.get("filepath");
String filetype = fileMap.get("filetype");
String filePath = "E:\\adad.txt";
//filePath =fileDownPre+filePath;
File file = new File(filePath);
if(file.exists()){
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", new FileSystemResource(new File(filePath)));
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(body, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(uploadFileUrl ,request, ResponseBeanForBeiJing.class);
//文件处理
String dataString = responseData.getData().toString();
evidenceid = evidenceid+dataString+",";
}else {
log.info("文件不存在,文件位置"+filePath);
}
}
if(evidenceid.length()>0){
evidenceid=evidenceid.substring(0,evidenceid.length()-1);
}
headers.setContentType(MediaType.APPLICATION_JSON);
sendKpxx.setEvidenceId(evidenceid);
HttpEntity<SendKpxx> request = new HttpEntity<>(sendKpxx, headers);
@ -317,18 +304,47 @@ public class ProcessScheduled {
log.error("返回的信息是" + responseData.toString());
}
}
//修改 暂无修改
//修改
if (sendKpxx.getOperatetype()==1){
if(sendKpxx.getInvoiceNo()==null){
log.info("修改发票发票编号不能为空");
}
headers.setContentType(MediaType.APPLICATION_JSON);
sendKpxx.setEvidenceId(evidenceid);
HttpEntity<SendKpxx> request = new HttpEntity<>(sendKpxx, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(invoiceUrl,request, ResponseBeanForBeiJing.class);
if ("200".equals(responseData.getCode())) {
// Map dataMap = (Map) responseData.getData();
// String invoiceNo = dataMap.get("invoiceNo").toString();
// HashMap<String, String> paramMap = new HashMap<>();
// paramMap.put("yptbh", invoiceNo);
// paramMap.put("id", sendKpxx.getRequestid());
// otherMapper.updateScKpsqsp_yptbh_Byid(paramMap);//把返回的项目编号存入Sc_kssqsp
LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getStatus, 1);//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
log.info("新增开票信息到云平台成功");
log.info(responseData.toString());
} else {
log.info("新增开票信息失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId());
log.error("返回的信息是" + responseData.toString());
}
}
}
@Transactional()
public void sendKpqrToYunPingtai(SendKpxx sendKpxx, HttpHeaders headers){
String invoiceNo = sendKpxx.getInvoiceNo();
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put("invoiceNo",invoiceNo);
HttpEntity<HashMap<String,String>> requestEntity = new HttpEntity<>(hashMap, headers);
ResponseEntity<ResponseBeanForBeiJing> exchange = restTemplate.exchange(InvoicingApprovalStatusUrl, HttpMethod.GET, requestEntity, ResponseBeanForBeiJing.class);
if(StringUtils.isBlank(invoiceNo)){
return;
}
// MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
// params.add("invoiceNo",invoiceNo);
//HttpEntity<HashMap<String,String>> StringrequestEntity = ;
HttpEntity<Object> request = new HttpEntity<>(null, headers);
ResponseEntity<ResponseBeanForBeiJing> exchange = restTemplate.exchange(InvoicingApprovalStatusUrl+"/"+invoiceNo, HttpMethod.GET, request, ResponseBeanForBeiJing.class);
ResponseBeanForBeiJing beanForBeiJing = exchange.getBody();
if (!"200".equals(beanForBeiJing.getCode())){
log.info("返回信息错误!"+beanForBeiJing.toString());
@ -336,7 +352,7 @@ public class ProcessScheduled {
}
Map dataMap = (Map) beanForBeiJing.getData();
Integer status = (Integer) dataMap.get("status");
if (status!=4){
if (status!=2){
log.info("开票申请未通过,不能进行开票确认");
return;
}
@ -344,8 +360,8 @@ public class ProcessScheduled {
if(sendKpxx.getOperatetype()==0){
invoiceNo = otherMapper.selectScKpsqsp_yptbh_ByPjid(sendKpxx.getRequestid()).get("yptbh");
sendKpxx.setInvoiceNo(invoiceNo);
HttpEntity<SendKpxx> request = new HttpEntity<>(sendKpxx, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(confirmUrl,request, ResponseBeanForBeiJing.class);
HttpEntity<SendKpxx> request1 = new HttpEntity<>(sendKpxx, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(confirmUrl,request1, ResponseBeanForBeiJing.class);
if ("200".equals(responseData.getCode())) {
LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
@ -365,13 +381,26 @@ public class ProcessScheduled {
}
@Transactional()
public void sendKpqrsrToYunPingtai(SendKpxx sendKpxx, HttpHeaders headers){
String invoiceNo = sendKpxx.getInvoiceNo();
ResponseBeanForBeiJing responseData = restTemplate.getForObject(InvoicingApprovalStatusUrl,ResponseBeanForBeiJing.class,headers,invoiceNo);
if (!"200".equals(responseData.getCode())){
log.info("返回信息错误!"+responseData.toString());
HashMap<String, String> stringStringHashMap = otherMapper.selectScKpsqsp_yptbh_Byreqid(sendKpxx.getWfrequest());
if(stringStringHashMap==null){
return;
}
String invoiceNo = stringStringHashMap.get("yptbh");
if(StringUtils.isBlank(invoiceNo)){
return;
}
// MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
// params.add("invoiceNo",invoiceNo);
// HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(params, headers);
HttpEntity<Object> request = new HttpEntity<>(null, headers);
ResponseEntity<ResponseBeanForBeiJing> exchange = restTemplate.exchange(InvoicingApprovalStatusUrl+"/"+invoiceNo, HttpMethod.GET, request, ResponseBeanForBeiJing.class);
ResponseBeanForBeiJing beanForBeiJing = exchange.getBody();
if (!"200".equals(beanForBeiJing.getCode())){
log.info("返回信息错误!"+beanForBeiJing.toString());
return;
}
Map dataMap = (Map) responseData.getData();
Map dataMap = (Map) beanForBeiJing.getData();
Integer status = (Integer) dataMap.get("status");
if (status!=4){
log.info("开票申请未通过,不能进行开票确认");
@ -381,10 +410,9 @@ public class ProcessScheduled {
if(sendKpxx.getOperatetype()==0){
invoiceNo = otherMapper.selectScKpsqsp_yptbh_Byreqid(sendKpxx.getWfrequest()).get("yptbh");
sendKpxx.setInvoiceNo(invoiceNo);
sendKpxx.setOpUserCode(sendKpxx.getIncomeUserCode());//操作员工编码
sendKpxx.setOpFlag(0);
HttpEntity<SendKpxx> request = new HttpEntity<>(sendKpxx, headers);
responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class);
HttpEntity<SendKpxx> request1= new HttpEntity<>(sendKpxx, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(incomeUrl, request1, ResponseBeanForBeiJing.class);
if ("200".equals(responseData.getCode())) {
dataMap = (Map) responseData.getData();
String incomeId = dataMap.get("incomeId").toString();
@ -405,20 +433,19 @@ public class ProcessScheduled {
}
//修改
if (sendKpxx.getOperatetype()==1){
invoiceNo = otherMapper.selectScKpsqsp_yptbh_ByPjid(sendKpxx.getRequestid()).get("yptbh");
invoiceNo = otherMapper.selectScKpsqsp_yptbh_Byreqid(sendKpxx.getWfrequest()).get("yptbh");
sendKpxx.setInvoiceNo(invoiceNo);
sendKpxx.setOpUserCode(sendKpxx.getIncomeUserCode());//操作员工编码
sendKpxx.setOpFlag(1);
String incomeId = otherMapper.selectScKpcwqrsr_incomeId_Bylcid(sendKpxx.getWfrequest()).get("incomeId");
sendKpxx.setIncomeId(incomeId);
HttpEntity<SendKpxx> request = new HttpEntity<>(sendKpxx, headers);
responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class);
HttpEntity<SendKpxx> request1 = new HttpEntity<>(sendKpxx, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(incomeUrl,request1, ResponseBeanForBeiJing.class);
//删除成功后在新增
if ("200".equals(responseData.getCode())){
sendKpxx.setOpFlag(0);
sendKpxx.setIncomeId(null);
HttpEntity<SendKpxx> request1 = new HttpEntity<>(sendKpxx, headers);
responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class);
HttpEntity<SendKpxx> request2 = new HttpEntity<>(sendKpxx, headers);
responseData = restTemplate.postForObject(incomeUrl,request2, ResponseBeanForBeiJing.class);
if("200".equals(responseData.getCode())){
dataMap = (Map) responseData.getData();
incomeId = dataMap.get("incomeId").toString();
@ -439,26 +466,37 @@ public class ProcessScheduled {
}
@Transactional()
public void sendKpqrdzToYunPingtai(SendKpxx sendKpxx, HttpHeaders headers){
String invoiceNo = sendKpxx.getInvoiceNo();
ResponseBeanForBeiJing responseData = restTemplate.getForObject(InvoicingApprovalStatusUrl,ResponseBeanForBeiJing.class,headers,invoiceNo);
if (!"200".equals(responseData.getCode())){
log.info("返回信息错误!"+responseData.toString());
HashMap<String, String> stringStringHashMap = otherMapper.selectScKpsqsp_yptbh_Byreqid(sendKpxx.getWfrequest());
if(stringStringHashMap==null){
return;
}
String invoiceNo = stringStringHashMap.get("yptbh");
if(StringUtils.isBlank(invoiceNo)){
return;
}
// MultiValueMap<String, String> par ams = new LinkedMultiValueMap<>();
// params.add("invoiceNo",invoiceNo);
// HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(params, headers);
HttpEntity<Object> request = new HttpEntity<>(null, headers);
ResponseEntity<ResponseBeanForBeiJing> exchange = restTemplate.exchange(InvoicingApprovalStatusUrl+"/"+invoiceNo, HttpMethod.GET, request, ResponseBeanForBeiJing.class);
ResponseBeanForBeiJing beanForBeiJing = exchange.getBody();
if (!"200".equals(beanForBeiJing.getCode())){
log.info("返回信息错误!"+beanForBeiJing.toString());
return;
}
Map dataMap = (Map) responseData.getData();
Map dataMap = (Map) beanForBeiJing.getData();
Integer status = (Integer) dataMap.get("status");
if (status!=4){
log.info("开票申请未通过,不能进行开票确认");
log.info("开票申请未确认,不能进行开票确认");
return;
}
//新增
if(sendKpxx.getOperatetype()==0){
invoiceNo = otherMapper.selectScKpsqsp_yptbh_ByPjid(sendKpxx.getRequestid()).get("yptbh");
sendKpxx.setInvoiceNo(invoiceNo);
sendKpxx.setOpUserCode(sendKpxx.getIncomeUserCode());//操作员工编码
sendKpxx.setOpFlag(0);
HttpEntity<SendKpxx> request = new HttpEntity<>(sendKpxx, headers);
responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class);
HttpEntity<SendKpxx> request1 = new HttpEntity<>(sendKpxx, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(accountUrl, request1, ResponseBeanForBeiJing.class);
if ("200".equals(responseData.getCode())) {
dataMap = (Map) responseData.getData();
String incomeId = dataMap.get("accountId").toString();
@ -481,18 +519,17 @@ public class ProcessScheduled {
if (sendKpxx.getOperatetype()==1){
invoiceNo = otherMapper.selectScKpsqsp_yptbh_ByPjid(sendKpxx.getRequestid()).get("yptbh");
sendKpxx.setInvoiceNo(invoiceNo);
sendKpxx.setOpUserCode(sendKpxx.getIncomeUserCode());//操作员工编码
sendKpxx.setOpFlag(1);
String accountId = otherMapper.selectScKpcwqrsr_accountId_Bylcid(sendKpxx.getRequestid()).get("accountId");
sendKpxx.setAccountId(accountId);
HttpEntity<SendKpxx> request = new HttpEntity<>(sendKpxx, headers);
responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class);
HttpEntity<SendKpxx> request2 = new HttpEntity<>(sendKpxx, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(accountUrl,request2, ResponseBeanForBeiJing.class);
//删除成功后在新增
if ("200".equals(responseData.getCode())){
sendKpxx.setOpFlag(0);
sendKpxx.setAccountId(null);
HttpEntity<SendKpxx> request1 = new HttpEntity<>(sendKpxx, headers);
responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class);
responseData = restTemplate.postForObject(accountUrl,request, ResponseBeanForBeiJing.class);
if("200".equals(responseData.getCode())){
dataMap = (Map) responseData.getData();
accountId = dataMap.get("accountId").toString();
@ -516,15 +553,20 @@ public class ProcessScheduled {
List<SendKpxx> sendKpxxToYPTList = sendKpxxMapper.querySendToYPT();
sendKpxxToYPTList.forEach(item->{
String invoiceNo = item.getInvoiceNo();
HttpEntity<String> requestEntity = new HttpEntity<>(invoiceNo, headers);
ResponseBeanForBeiJing responseData = restTemplate.getForObject(InvoicingApprovalStatusUrl,ResponseBeanForBeiJing.class,invoiceNo,headers);
if (!"200".equals(responseData.getCode())){
log.info("返回信息错误!"+responseData.toString());
// MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
// params.add("invoiceNo",invoiceNo);
// HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(params, headers);
HttpEntity<Object> request = new HttpEntity<>(null, headers);
ResponseEntity<ResponseBeanForBeiJing> exchange = restTemplate.exchange(InvoicingApprovalStatusUrl+"/"+invoiceNo, HttpMethod.GET, request, ResponseBeanForBeiJing.class);
ResponseBeanForBeiJing beanForBeiJing = exchange.getBody();
if (!"200".equals(beanForBeiJing.getCode())){
log.info("返回信息错误!"+beanForBeiJing.toString());
return;
}
Map dataMap = (Map) responseData.getData();
Map dataMap = (Map) beanForBeiJing.getData();
Integer status = (Integer) dataMap.get("status");
if (status==4){
if (status==2 || status==4){
//已确认
//更新这边的流程
String processId = sendKpxxMapper.selectProcessId(item.getRequestid());
@ -532,8 +574,8 @@ public class ProcessScheduled {
requestlog.setRequestid(processId);
requestlog.setStaffid(kpssProcessNode6IdInfo.getCurrentStaffid());
requestlog.setIsedit(1);
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
requestlog.setCreatedate(LocalDate.now().format(dateTimeFormatter));
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
requestlog.setCreatedate(dateFormat.format(new Date()));
requestlog.setStepid(kpssProcessNode6IdInfo.getCurrentStepid());
requestlog.setNtype(1);
requestlog.setInfo("北京同意");
@ -555,7 +597,7 @@ public class ProcessScheduled {
permissionrulegroup.setStmp("2c9adae478fdbe15017906f93ec90266");
permissionrulegroup.setDsporder(0);
permissionrulegroup.setLayoutedit("2c9a59b681805f1301818a7047300091");
permissionrulegroup.setAdddate(LocalDate.now().format(dateTimeFormatter));
permissionrulegroup.setAdddate(dateFormat.format(new Date()));
permissionrulegroup.setAllowstaffids(kpssProcessNode6IdInfo.getNextAllowStaffids());
permissionrulegroup.setMatrixtype(0);
permissionrulegroupMapper.insert(permissionrulegroup);
@ -566,13 +608,18 @@ public class ProcessScheduled {
readlog.setStaffid(kpssProcessNode6IdInfo.getCurrentStaffid());
readlog.setReadnum("1");
readlog.setResid("2c9adae478fdbe15017906f73e8a0261");
readlog.setLastaccessdate(LocalDate.now().format(dateTimeFormatter));
readlog.setAdddate(LocalDate.now().format(dateTimeFormatter));
readlog.setLastaccessdate(dateFormat.format(new Date()));
readlog.setAdddate(dateFormat.format(new Date()));
readlogMapper.insert(readlog);
log.info("readlog1111新增成功:"+readlog.toString());
readlog.setId(UUID.randomUUID().toString().replace("-",""));
readlog.setStepid(kpssProcessNode6IdInfo.getNextStepid());
readlog.setAdddate(LocalDate.now().plus(Duration.ofSeconds(10)).format(dateTimeFormatter));//加10
readlog.setLastaccessdate(LocalDate.now().plus(Duration.ofSeconds(10)).format(dateTimeFormatter));
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.SECOND,10);
Date time = calendar.getTime();
readlog.setAdddate(dateFormat.format(time));//加10
readlog.setLastaccessdate(dateFormat.format(time));
readlogMapper.insert(readlog);
log.info("readlog22222新增成功:"+readlog.toString());
Requestoperator requestoperator = new Requestoperator();
@ -584,7 +631,7 @@ public class ProcessScheduled {
LambdaUpdateWrapper<Requestoperator> requestoperatorLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
requestoperatorLambdaUpdateWrapper.set(Requestoperator::getIssubmit,1);
requestoperatorLambdaUpdateWrapper.set(Requestoperator::getSubmitdate,LocalDate.now().format(dateTimeFormatter));
requestoperatorLambdaUpdateWrapper.set(Requestoperator::getSubmitdate,dateFormat.format(new Date()));
requestoperatorLambdaUpdateWrapper.eq(Requestoperator::getId,requestoperatorId);
requestoperatorMapper.update(null,requestoperatorLambdaUpdateWrapper);
log.info("requestoperatorLambdaUpdateWrapper成功:"+requestoperatorLambdaUpdateWrapper.toString());
@ -594,7 +641,7 @@ public class ProcessScheduled {
requestoperator.setStepoperid(kpssProcessNode6IdInfo.getNextStepOperid());
requestoperator.setStaffid(kpssProcessNode6IdInfo.getNextAllowStaffids());
requestoperator.setIssubmit(0);
requestoperator.setReceivedate(LocalDate.now().format(dateTimeFormatter));
requestoperator.setReceivedate(dateFormat.format(new Date()));
requestoperator.setOpertype(1);
requestoperator.setIsremind(0);
requestoperator.setIsorioperator(0);
@ -603,7 +650,7 @@ public class ProcessScheduled {
log.info("requestoperator新增成功:"+requestoperator.toString());
LambdaUpdateWrapper<Wfrequest> wfrequestLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
wfrequestLambdaUpdateWrapper.set(Wfrequest::getLastmodifydate,LocalDate.now().format(dateTimeFormatter));
wfrequestLambdaUpdateWrapper.set(Wfrequest::getLastmodifydate,dateFormat.format(new Date()));
wfrequestLambdaUpdateWrapper.set(Wfrequest::getLaststaffid,kpssProcessNode6IdInfo.getCurrentStaffid());
wfrequestLambdaUpdateWrapper.eq(Wfrequest::getId,processId);
wfrequestMapper.update(null,wfrequestLambdaUpdateWrapper);
@ -612,13 +659,13 @@ public class ProcessScheduled {
LambdaUpdateWrapper<Requeststatus> requeststatusLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
requeststatusLambdaUpdateWrapper.set(Requeststatus::getStepid,kpssProcessNode6IdInfo.getNextStepid());
requeststatusLambdaUpdateWrapper.set(Requeststatus::getPrestepid,kpssProcessNode6IdInfo.getCurrentStepid());
requeststatusLambdaUpdateWrapper.set(Requeststatus::getModifydate,LocalDate.now().format(dateTimeFormatter));
requeststatusLambdaUpdateWrapper.set(Requeststatus::getModifydate,dateFormat.format(new Date()));
requeststatusLambdaUpdateWrapper.eq(Requeststatus::getRequestid,processId);
requeststatusMapper.update(null,requeststatusLambdaUpdateWrapper);
log.info("requeststatusLambdaUpdateWrapper修改成功:"+requeststatusLambdaUpdateWrapper.toString());
LambdaUpdateWrapper<ScXglc> scXglcLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
scXglcLambdaUpdateWrapper.set(ScXglc::getZhtjsj,LocalDate.now().format(dateTimeFormatter));
scXglcLambdaUpdateWrapper.set(ScXglc::getZhtjsj,dateFormat.format(new Date()));
scXglcLambdaUpdateWrapper.set(ScXglc::getZhtjr,kpssProcessNode6IdInfo.getCurrentStaffid());
scXglcLambdaUpdateWrapper.set(ScXglc::getDqjd,kpssProcessNode6IdInfo.getNextStepid());
scXglcLambdaUpdateWrapper.eq(ScXglc::getLc,processId);
@ -626,7 +673,118 @@ public class ProcessScheduled {
log.info("scXglcLambdaUpdateWrapper修改成功:"+scXglcLambdaUpdateWrapper.toString());
log.info("流程数据更新成功,流程到财务开票");
}
//退回流程
if(status ==3 ||status==5){
LambdaQueryWrapper<Wfrequest> wfrequestLambdaQueryWrapper = new LambdaQueryWrapper<Wfrequest>();
wfrequestLambdaQueryWrapper.eq(Wfrequest::getDataid,item.getRequestid());
List<Wfrequest> wfrequests = wfrequestMapper.selectList(wfrequestLambdaQueryWrapper);
Wfrequest wfrequest = wfrequests.get(0);
String creatorid = wfrequest.getCreatorid();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
HashMap<String,String> param = new HashMap<>();
param.put("reqid",item.getRequestid());
param.put("modifyDate",dateFormat.format(new Date()));
param.put("preStepid",kpssProcessNode6IdInfo.getCurrentStepid());
param.put("creatorId",creatorid);
otherMapper.updateRequeststatusBack(param);
LambdaUpdateWrapper<Requestoperator> requestoperatorLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
requestoperatorLambdaUpdateWrapper.ne(Requestoperator::getStepid,kpssProcessNode6IdInfo.getFriststepid());
requestoperatorLambdaUpdateWrapper.eq(Requestoperator::getRequestid,item.getRequestid());
requestoperatorMapper.delete(requestoperatorLambdaUpdateWrapper);
requestoperatorLambdaUpdateWrapper.clear();
requestoperatorLambdaUpdateWrapper.set(Requestoperator::getIssubmit,0);
requestoperatorLambdaUpdateWrapper.set(Requestoperator::getReceivedate,dateFormat.format(new Date()));
requestoperatorLambdaUpdateWrapper.eq(Requestoperator::getStepid,kpssProcessNode6IdInfo.getFriststepid());
requestoperatorLambdaUpdateWrapper.eq(Requestoperator::getRequestid,item.getRequestid());
requestoperatorLambdaUpdateWrapper.set(Requestoperator::getSubmitdate,"");
Requestlog requestlog = new Requestlog();
requestlog.setRequestid(item.getRequestid());
requestlog.setStaffid(kpssProcessNode6IdInfo.getCurrentStaffid());
requestlog.setIsedit(0);
requestlog.setCreatedate(dateFormat.format(new Date()));
requestlog.setStepid(kpssProcessNode6IdInfo.getCurrentStepid());
requestlog.setInfo("云平台北京退回");
requestlog.setTypeinfo(kpssProcessNode6IdInfo.getFriststepid());
requestlog.setNtype(4);
requestlog.setIstodo(1);
requestlog.setNextstepid(kpssProcessNode6IdInfo.getFriststepid());
requestlogMapper.insert(requestlog);
LambdaUpdateWrapper<Readlog> readlogLambdaUpdateWrapper = Wrappers.lambdaUpdate();
readlogLambdaUpdateWrapper.eq(Readlog::getDataid,item.getRequestid());
readlogLambdaUpdateWrapper.ne(Readlog::getStepid,kpssProcessNode6IdInfo.getFriststepid());
readlogMapper.delete(readlogLambdaUpdateWrapper);
readlogLambdaUpdateWrapper.clear();
readlogLambdaUpdateWrapper.eq(Readlog::getDataid,item.getRequestid());
readlogLambdaUpdateWrapper.eq(Readlog::getStepid,kpssProcessNode6IdInfo.getFriststepid());
readlogLambdaUpdateWrapper.set(Readlog::getLastaccessdate,dateFormat.format(new Date()));
readlogLambdaUpdateWrapper.setSql("readnum=readnum+1");
readlogMapper.update(null,readlogLambdaUpdateWrapper);
param.clear();
param.put("resid",item.getRequestid());
param.put("staffid",kpssProcessNode6IdInfo.getFriststepid());
otherMapper.delPermissionuserBack(param);
LambdaUpdateWrapper<Permissionrulegroup> permissionrulegroupLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
permissionrulegroupLambdaUpdateWrapper.eq(Permissionrulegroup::getResid,item.getRequestid());
permissionrulegroupLambdaUpdateWrapper.ne(Permissionrulegroup::getTypeid,"2c9adae478e9195d0178f3300fcc0432");
permissionrulegroupMapper.delete(permissionrulegroupLambdaUpdateWrapper);
}
});
}
//发送发票文件
private String sendfpfielUpdown(HttpHeaders headers,String[] evidenceIds){
String evidenceid="";
for (String id:evidenceIds) {
//查询
HashMap<String, String> fileMap = otherMapper.selectFileById(id);
String filePath = fileMap.get("filepath");
String filetype = fileMap.get("filetype");
//String filePath = "E:\\adad.txt";
filePath =fileDownPre+filePath;
File file = new File(filePath);
if(file.exists()){
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", new FileSystemResource(new File(filePath)));
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(body, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(uploadFileUrl ,request, ResponseBeanForBeiJing.class);
//文件处理
String dataString = responseData.getData().toString();
evidenceid = evidenceid+dataString+",";
}else {
log.info("文件不存在,文件位置"+filePath);
}
}
return evidenceid;
}
public void sendKpCancelToYPT(HttpHeaders headers){
List<HashMap<String, String>> hashMapList = otherMapper.selectSchtqxByflag();
if (hashMapList.size()>0){
hashMapList.forEach(item->{
String yptbh = item.get("yptbh");
if(StringUtils.isBlank(yptbh)){
return;
}
HttpEntity<Object> request = new HttpEntity<>(null, headers);
ResponseEntity<ResponseBeanForBeiJing> exchange = restTemplate.exchange(cancelPrjetcUrl+"/CLOSE/"+yptbh, HttpMethod.PUT, request, ResponseBeanForBeiJing.class);
ResponseBeanForBeiJing beanForBeiJing = exchange.getBody();
if (!"200".equals(beanForBeiJing.getCode())){
log.info("返回信息错误!"+beanForBeiJing.toString());
return;
}
if ("200".equals(beanForBeiJing.getCode())) {
Map dataMap = (Map) beanForBeiJing.getData();
String projectNo = dataMap.get("projectNo").toString();
HashMap<String, String> paramMap = new HashMap<>();
otherMapper.updateSchtqx_Byid(item.get("id"));//更新状态
log.info("合同取消到北京到北京成功");
log.info(beanForBeiJing.toString());
} else {
log.info("返回的信息是" + beanForBeiJing.toString());
}
});
}
}
}

3
src/main/resources/application-dev.yml

@ -24,7 +24,9 @@ ypt:
confirmUrl: http://123.57.82.48:13310/api/nb/invoice/confirm
uploadFileUrl: http://123.57.82.48:13310/api/nb/invoice/uploadEvidence
incomeUrl: http://123.57.82.48:13310/api/nb/invoice/income
accountUrl: http://123.57.82.48:13310/api/nb/invoice/account
InvoicingApprovalStatusUrl: http://123.57.82.48:13310/api/nb/invoice/status
cancelPrjetcUrl: http://123.57.82.48:13310/api/nb/project
fileDownPre: '/opt/eresource_test/attachFiles/'
kpssProcessNode6IdInfo:
perStepid: "2c9adae478fdbe15017906f93ec90265"
@ -34,5 +36,6 @@ kpssProcessNode6IdInfo:
nextTypeid: "2c9adae4797fd663017982bd72f801dc"
nextAllowStaffids: "2c908da5803abfa4018064f817070161"
nextStepOperid: "2c9adae4797fd663017982c00bf301e3"
friststepid: "2c9adae478fdbe15017906f93ec90262"

22
src/main/resources/mapper/OtherMapper.xml

@ -34,7 +34,7 @@
update sc_kpcwqrsr set incomeId = #{incomeId} where lcid = #{lcid}
</update>
<select id="selectScKpcwqrsr_incomeId_Bylcid" resultType="Map">
select DISTINCT incomeId from sc_kpsqsp where id = #{lcid}
select DISTINCT incomeId from sc_kpcwqrsr where lcid = #{lcid}
</select>
<update id="updateScKpsqsp_accountId_Byid" parameterType="Map">
update sc_kpsqsp set accountId = #{accountId} where id = #{id}
@ -45,4 +45,24 @@
<select id="selectProcessNo5IsSubmit" resultType="Map">
SELECT * FROM requestoperator WHERE requestid=(select DISTINCT requestid from sc_kpsqsp where id =#{reqid}) and stepid =#{setpid} and isSubmit =1
</select>
<select id="selectSchtqxByflag" resultType="Map">
select
a.id,
(select yptbh from sc_xmkp1 b where b.id = a.xmmc ) yptbh
from sc_htqx a
where
sfqx='2c9a59b68b9fd59d018cfdfe5abb5e0a' and status is null
</select>
<update id="updateSchtqx_Byid" parameterType="Map">
update sc_htqx set status =1 where id = #{id}
</update>
<update id="updateRequeststatusBack" parameterType="Map">
update requeststatus set stepid = #{creatorId},
preStepid =#{preStepid},
modifyDate =#{modifyDate},
WHERE requestid=(select DISTINCT requestid from sc_kpsqsp where id =#{reqid})
</update>
<delete id="delPermissionuserBack" parameterType="Map">
DELETE from Permissionuser where resid = #{resid} and staffid = #{staffid} and operate=1
</delete>
</mapper>

14
src/main/resources/mapper/SendKpxxMapper.xml

@ -26,7 +26,7 @@
<result property="incomeUserCode" column="income_user_code" jdbcType="VARCHAR"/>
<result property="accountDate" column="account_date" jdbcType="VARCHAR"/>
<result property="accountAmount" column="account_amount" jdbcType="NUMERIC"/>
<result property="accountUserCode" column="account_user_code" jdbcType="VARCHAR"/>
<result property="opUserCode" column="opUserCode" jdbcType="VARCHAR"/>
<result property="createtime" column="createtime" jdbcType="TIMESTAMP"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="operatetype" column="operatetype" jdbcType="INTEGER"/>
@ -37,7 +37,7 @@
select
id,
requestid,
(select yptbh from sc_kpsqsp where id = requestid) invoice_no,
(select yptbh from sc_kpsqsp where id = A.requestid) invoice_no,
invoice_date,
(select yptbh from sc_xmkp1 where id =project_no ) project_no,
(select zftk from sc_zfmx where id =receipt_schedule_name ) receipt_schedule_name,
@ -55,16 +55,16 @@
(SELECT number0 from staff b WHERE b.id = confirm_user_code) confirm_user_code,
income_date,
income_amount,
(SELECT number0 from staff b WHERE b.id = income_user_code) income_user_code,
account_date,
account_amount,
(SELECT number0 from staff b WHERE b.id = account_user_code) account_user_code,
case when income_user_code is null THEN (SELECT number0 from staff b WHERE b.id = account_user_code)
else (SELECT number0 from staff b WHERE b.id = income_user_code) end as opUserCode,
createtime,
status,
interface_type,
operatetype,
wfrequest
from send_kpxx
from send_kpxx A
where status is null
order by createtime
</select>
@ -72,13 +72,13 @@
select
id,
requestid,
(select yptbh from sc_kpsqsp where id = requestid) invoice_no,
(select yptbh from sc_kpsqsp where id = a.requestid) invoice_no,
createtime,
status,
interface_type,
operatetype,
wfrequest
from send_kpxx
from send_kpxx a
where status =1 and operatetype = 0 and interface_type = 0
order by createtime
</select>

Loading…
Cancel
Save