diff --git a/pom.xml b/pom.xml index 9104bb2..98f3fb6 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ GuoYan GuoYan - 11 + 17 @@ -71,7 +71,7 @@ org.projectlombok lombok - 1.18.10 + diff --git a/src/main/java/com/example/guoyan/config/RestTemplateConfig.java b/src/main/java/com/example/guoyan/config/RestTemplateConfig.java index 11034a6..dc233ad 100644 --- a/src/main/java/com/example/guoyan/config/RestTemplateConfig.java +++ b/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); +// } +// } } diff --git a/src/main/java/com/example/guoyan/controller/TestController.java b/src/main/java/com/example/guoyan/controller/TestController.java index 88cc2c5..6459fd3 100644 --- a/src/main/java/com/example/guoyan/controller/TestController.java +++ b/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> 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> 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("成功"); } diff --git a/src/main/java/com/example/guoyan/entity/KpssProcessNode6IdInfo.java b/src/main/java/com/example/guoyan/entity/KpssProcessNode6IdInfo.java index 759b892..1ddf0a8 100644 --- a/src/main/java/com/example/guoyan/entity/KpssProcessNode6IdInfo.java +++ b/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; } diff --git a/src/main/java/com/example/guoyan/mapper/OtherMapper.java b/src/main/java/com/example/guoyan/mapper/OtherMapper.java index 6ef5e9a..0e58b1c 100644 --- a/src/main/java/com/example/guoyan/mapper/OtherMapper.java +++ b/src/main/java/com/example/guoyan/mapper/OtherMapper.java @@ -34,4 +34,9 @@ public interface OtherMapper extends BaseMapper { HashMap selectScKpsqsp_yptbh_Byreqid(@Param("requestid") String id); List> selectProcessNo5IsSubmit(@Param("reqid") String id,@Param("setpid") String setpid); + List> selectSchtqxByflag(); + void updateSchtqx_Byid(@Param("id") String id); + void updateRequeststatusBack(HashMap map); + void delPermissionuserBack(HashMap map); + } diff --git a/src/main/java/com/example/guoyan/scheduled/ProcessScheduled.java b/src/main/java/com/example/guoyan/scheduled/ProcessScheduled.java index 0fba40c..ef99846 100644 --- a/src/main/java/com/example/guoyan/scheduled/ProcessScheduled.java +++ b/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 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 body = new LinkedMultiValueMap<>(); - body.add("file", new FileSystemResource(new File(filePath))); - HttpEntity> 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 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 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 paramMap = new HashMap<>(); +// paramMap.put("yptbh", invoiceNo); +// paramMap.put("id", sendKpxx.getRequestid()); +// otherMapper.updateScKpsqsp_yptbh_Byid(paramMap);//把返回的项目编号存入Sc_kssqsp + LambdaUpdateWrapper 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 hashMap = new HashMap<>(); - hashMap.put("invoiceNo",invoiceNo); - HttpEntity> requestEntity = new HttpEntity<>(hashMap, headers); - ResponseEntity exchange = restTemplate.exchange(InvoicingApprovalStatusUrl, HttpMethod.GET, requestEntity, ResponseBeanForBeiJing.class); + if(StringUtils.isBlank(invoiceNo)){ + return; + } + +// MultiValueMap params = new LinkedMultiValueMap<>(); +// params.add("invoiceNo",invoiceNo); + //HttpEntity> StringrequestEntity = ; + + HttpEntity request = new HttpEntity<>(null, headers); + ResponseEntity 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 request = new HttpEntity<>(sendKpxx, headers); - ResponseBeanForBeiJing responseData = restTemplate.postForObject(confirmUrl,request, ResponseBeanForBeiJing.class); + HttpEntity request1 = new HttpEntity<>(sendKpxx, headers); + ResponseBeanForBeiJing responseData = restTemplate.postForObject(confirmUrl,request1, ResponseBeanForBeiJing.class); if ("200".equals(responseData.getCode())) { LambdaUpdateWrapper 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 stringStringHashMap = otherMapper.selectScKpsqsp_yptbh_Byreqid(sendKpxx.getWfrequest()); + if(stringStringHashMap==null){ + return; + } + String invoiceNo = stringStringHashMap.get("yptbh"); + if(StringUtils.isBlank(invoiceNo)){ + return; + } + +// MultiValueMap params = new LinkedMultiValueMap<>(); +// params.add("invoiceNo",invoiceNo); +// HttpEntity> request = new HttpEntity<>(params, headers); + HttpEntity request = new HttpEntity<>(null, headers); + ResponseEntity 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 request = new HttpEntity<>(sendKpxx, headers); - responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class); + HttpEntity 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 request = new HttpEntity<>(sendKpxx, headers); - responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class); + HttpEntity 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 request1 = new HttpEntity<>(sendKpxx, headers); - responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class); + HttpEntity 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 stringStringHashMap = otherMapper.selectScKpsqsp_yptbh_Byreqid(sendKpxx.getWfrequest()); + if(stringStringHashMap==null){ + return; + } + String invoiceNo = stringStringHashMap.get("yptbh"); + if(StringUtils.isBlank(invoiceNo)){ + return; + } +// MultiValueMap par ams = new LinkedMultiValueMap<>(); +// params.add("invoiceNo",invoiceNo); +// HttpEntity> request = new HttpEntity<>(params, headers); + HttpEntity request = new HttpEntity<>(null, headers); + ResponseEntity 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 request = new HttpEntity<>(sendKpxx, headers); - responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class); + HttpEntity 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 request = new HttpEntity<>(sendKpxx, headers); - responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class); + HttpEntity 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 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 sendKpxxToYPTList = sendKpxxMapper.querySendToYPT(); sendKpxxToYPTList.forEach(item->{ String invoiceNo = item.getInvoiceNo(); - HttpEntity requestEntity = new HttpEntity<>(invoiceNo, headers); - ResponseBeanForBeiJing responseData = restTemplate.getForObject(InvoicingApprovalStatusUrl,ResponseBeanForBeiJing.class,invoiceNo,headers); - if (!"200".equals(responseData.getCode())){ - log.info("返回信息错误!"+responseData.toString()); + +// MultiValueMap params = new LinkedMultiValueMap<>(); +// params.add("invoiceNo",invoiceNo); +// HttpEntity> request = new HttpEntity<>(params, headers); + HttpEntity request = new HttpEntity<>(null, headers); + ResponseEntity 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 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 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 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 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 wfrequestLambdaQueryWrapper = new LambdaQueryWrapper(); + wfrequestLambdaQueryWrapper.eq(Wfrequest::getDataid,item.getRequestid()); + List wfrequests = wfrequestMapper.selectList(wfrequestLambdaQueryWrapper); + Wfrequest wfrequest = wfrequests.get(0); + String creatorid = wfrequest.getCreatorid(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + HashMap 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 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 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 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 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 body = new LinkedMultiValueMap<>(); + body.add("file", new FileSystemResource(new File(filePath))); + HttpEntity> 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> hashMapList = otherMapper.selectSchtqxByflag(); + if (hashMapList.size()>0){ + hashMapList.forEach(item->{ + String yptbh = item.get("yptbh"); + if(StringUtils.isBlank(yptbh)){ + return; + } + HttpEntity request = new HttpEntity<>(null, headers); + ResponseEntity 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 paramMap = new HashMap<>(); + otherMapper.updateSchtqx_Byid(item.get("id"));//更新状态 + log.info("合同取消到北京到北京成功"); + log.info(beanForBeiJing.toString()); + } else { + log.info("返回的信息是" + beanForBeiJing.toString()); + } + }); + } + } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index b50b063..8ee140f 100644 --- a/src/main/resources/application-dev.yml +++ b/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" diff --git a/src/main/resources/mapper/OtherMapper.xml b/src/main/resources/mapper/OtherMapper.xml index 0985f1c..d67ff20 100644 --- a/src/main/resources/mapper/OtherMapper.xml +++ b/src/main/resources/mapper/OtherMapper.xml @@ -34,7 +34,7 @@ update sc_kpcwqrsr set incomeId = #{incomeId} where lcid = #{lcid} update sc_kpsqsp set accountId = #{accountId} where id = #{id} @@ -45,4 +45,24 @@ + + + update sc_htqx set status =1 where id = #{id} + + + update requeststatus set stepid = #{creatorId}, + preStepid =#{preStepid}, + modifyDate =#{modifyDate}, + WHERE requestid=(select DISTINCT requestid from sc_kpsqsp where id =#{reqid}) + + + DELETE from Permissionuser where resid = #{resid} and staffid = #{staffid} and operate=1 + \ No newline at end of file diff --git a/src/main/resources/mapper/SendKpxxMapper.xml b/src/main/resources/mapper/SendKpxxMapper.xml index 913a121..48f0e82 100644 --- a/src/main/resources/mapper/SendKpxxMapper.xml +++ b/src/main/resources/mapper/SendKpxxMapper.xml @@ -26,7 +26,7 @@ - + @@ -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 @@ -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