Browse Source

修复缺陷

master
zhouhaibin 2 months ago
parent
commit
23f9c75a94
  1. 21
      pom.xml
  2. 232
      src/main/java/com/example/guoyan/controller/FilePreviewController.java
  3. 16
      src/main/java/com/example/guoyan/controller/YunpingtaiController.java
  4. 13
      src/main/java/com/example/guoyan/mapper/AttachMapper.java
  5. 1
      src/main/java/com/example/guoyan/mapper/OtherMapper.java
  6. 80
      src/main/java/com/example/guoyan/scheduled/MailService.java
  7. 281
      src/main/java/com/example/guoyan/scheduled/ProcessScheduled.java
  8. 2
      src/main/resources/application-prod.yml
  9. 28
      src/main/resources/application.yml
  10. 9
      src/main/resources/mapper/AttachMapper.xml
  11. 4
      src/main/resources/mapper/OtherMapper.xml
  12. 5
      src/main/resources/mapper/SendKpxxMapper.xml

21
pom.xml

@ -14,7 +14,7 @@
<name>GuoYan</name> <name>GuoYan</name>
<description>GuoYan</description> <description>GuoYan</description>
<properties> <properties>
<java.version>11</java.version> <java.version>1.8</java.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
@ -67,6 +67,25 @@
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
<version>2.8.0</version> <!-- 请检查最新版本 --> <version>2.8.0</version> <!-- 请检查最新版本 -->
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

232
src/main/java/com/example/guoyan/controller/FilePreviewController.java

@ -0,0 +1,232 @@
package com.example.guoyan.controller;
import com.example.guoyan.mapper.AttachMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
import java.nio.channels.WritableByteChannel;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
@RestController
@RequestMapping("/fileview")
@Slf4j
public class FilePreviewController {
@Autowired
private AttachMapper attachMapper;
@Autowired
private RestTemplate restTemplate;
// @GetMapping("/download")
// public void fileDownload(String id, String dataid, HttpServletResponse response) throws IOException {
//
// InputStream fileInputStream = null;
// BufferedInputStream inputStream = null;
// ServletOutputStream outputStream = null;
// log.info("id: " + id);
// log.info("dataid: " + dataid);
// try {
// // 获取文件信息
// HashMap<String, String> fileInfo = attachMapper.selectByid(id);
// String filepath = "/opt/eresource/attachFiles/" + fileInfo.get("filepath");
// String originalname = fileInfo.get("originalname");
// File file = new File(filepath);
//
// // 设置响应头
// response.addHeader("content-disposition", "attachment;filename=" +
// URLEncoder.encode(originalname, "UTF-8") + ";filename*=UTF-8''" +
// URLEncoder.encode(originalname, "UTF-8"));
// response.setContentType("application/octet-stream");
// response.addHeader("Content-Length", "" + file.length());
//
// // 读取文件并写入响应流
// fileInputStream = new FileInputStream(filepath);
// inputStream = new BufferedInputStream(fileInputStream);
// outputStream = response.getOutputStream();
//
// byte[] bytes = new byte[1024];
// int len = inputStream.read(bytes);
// while (len != -1) {
// outputStream.write(bytes, 0, len); // 修改这里,使用len而不是bytes.length
// outputStream.flush();
// len = inputStream.read(bytes);
// }
//
// } catch (IOException e) {
// throw new RuntimeException("文件下载失败", e);
// } finally {
// log.info("文件下载完成");
// // 关闭流
// if (inputStream != null) {
// try {
// inputStream.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// if (fileInputStream != null) {
// try {
// fileInputStream.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// if (outputStream != null) {
// try {
// outputStream.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// }
// }
@GetMapping("/download")
public void fileDownload(String id, String dataid, HttpServletResponse response) throws IOException {
try {
// 获取文件信息
HashMap<String, String> fileInfo = attachMapper.selectByid(id);
String filepath = "/opt/eresource/attachFiles/" + fileInfo.get("filepath");
File file = new File(filepath);
// 设置响应头
response.setHeader("content-disposition", "attachment;filename=" +
URLEncoder.encode(fileInfo.get("originalname"), "UTF-8") +
";filename*=UTF-8''" + URLEncoder.encode(fileInfo.get("originalname"), "UTF-8"));
response.setContentType("application/octet-stream");
response.setContentLength((int) file.length());
// 使用NIO通道
try (FileChannel fileChannel = new FileInputStream(file).getChannel();
WritableByteChannel outputChannel = Channels.newChannel(response.getOutputStream())) {
// 使用transferTo方法直接传输数据
fileChannel.transferTo(0, file.length(), outputChannel);
}
} catch (Exception e) {
log.error("文件下载失败", e);
throw new RuntimeException("文件下载失败", e);
}
}
@GetMapping("/retrieveImage")
public void retrieveImage(String action, String id, HttpServletResponse response) throws IOException {
try {
// 验证参数
if (!"retrieve".equals(action) || StringUtils.isEmpty(id)) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "参数错误");
return;
}
// 获取文件信息
HashMap<String, String> fileInfo = attachMapper.selectByid(id);
if (fileInfo == null) {
response.sendError(HttpServletResponse.SC_NOT_FOUND, "图片不存在");
return;
}
String filepath = "/opt/eresource/attachFiles/" + fileInfo.get("filepath");
File file = new File(filepath);
if (!file.exists()) {
response.sendError(HttpServletResponse.SC_NOT_FOUND, "图片文件不存在");
return;
}
// 设置响应头
String contentType = getContentType(fileInfo.get("originalname"));
response.setContentType(contentType);
response.setContentLength((int) file.length());
// 使用NIO通道传输数据
try (FileChannel fileChannel = new FileInputStream(file).getChannel();
WritableByteChannel outputChannel = Channels.newChannel(response.getOutputStream())) {
fileChannel.transferTo(0, file.length(), outputChannel);
}
} catch (Exception e) {
log.error("图片获取失败", e);
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "图片获取失败");
}
}
@GetMapping("/preview")
public void previewFile(String id, String dataid, HttpServletRequest request, HttpServletResponse response,Boolean isdownload,String action) throws IOException {
if(isdownload!=null&&isdownload){
fileDownload(id, dataid, response);
return;
}
if(isdownload==null&&action!=null&&action.equals("retrieve")){
retrieveImage(action, id, response);
return;
}
try {
log.info("id: " + id);
// 获取文件信息
HashMap<String, String> fileInfo = attachMapper.selectByid(id);
String originalname = fileInfo.get("originalname");
String filetype = fileInfo.get("filetype");
log.info("originalname: " + originalname);
// 配置信息(建议放在配置文件中)
String kkFileViewUrl = "http://116.62.210.190:8012/onlinePreview";
String currentServerUrl = "";
if(filetype!=null&&filetype.contains("image")){
currentServerUrl = "http://116.62.210.190:8002";
}else{
currentServerUrl = "http://127.0.0.1:8002";
}
// 构建原始文件下载URL
String fileUrl = currentServerUrl + "/fileview/download?id=" + id + "&dataid=" + dataid+"&fullfilename="+id+"_"+originalname;
log.info("fileUrl: " + fileUrl);
// Base64编码文件URL
String base64FileUrl = Base64.getEncoder().encodeToString(fileUrl.getBytes());
log.info("base64FileUrl: " + base64FileUrl);
// 构建完整的预览URL
String previewUrl = kkFileViewUrl + "?url=" + base64FileUrl;
log.info("kkFileViewUrl: " + previewUrl);
response.sendRedirect(previewUrl);
} catch (Exception e) {
throw new RuntimeException("文件预览失败", e);
}
}
/**
* 获取文件的ContentType
*/
private String getContentType(String filepath) {
String extension = filepath.substring(filepath.lastIndexOf(".")).toLowerCase();
switch (extension) {
case ".jpg":
case ".jpeg":
return "image/jpeg";
case ".png":
return "image/png";
case ".gif":
return "image/gif";
case ".webp":
return "image/webp";
default:
return "application/octet-stream";
}
}
}

16
src/main/java/com/example/guoyan/controller/YunpingtaiController.java

@ -9,6 +9,7 @@ import com.example.guoyan.entity.SendKpxx;
import com.example.guoyan.entity.SendXm; import com.example.guoyan.entity.SendXm;
import com.example.guoyan.mapper.*; import com.example.guoyan.mapper.*;
import com.example.guoyan.response.ResponseBeanForBeiJing; import com.example.guoyan.response.ResponseBeanForBeiJing;
import com.example.guoyan.scheduled.MailService;
import com.example.guoyan.scheduled.ProcessScheduled; import com.example.guoyan.scheduled.ProcessScheduled;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -62,6 +63,9 @@ public class YunpingtaiController {
private String loginUrl; private String loginUrl;
@Value("${ypt.deleteUrl}") @Value("${ypt.deleteUrl}")
private String deleteUrl; private String deleteUrl;
@Autowired
private MailService mailService;
@GetMapping() @GetMapping()
public Result<String> upLoadFile() { public Result<String> upLoadFile() {
String url = loginUrl; String url = loginUrl;
@ -259,4 +263,16 @@ public class YunpingtaiController {
String[] s = {"2c9a59b68d401eb1018e5f47201e5d84", "2c9a59b68d401eb1018e5f4720205d85"}; String[] s = {"2c9a59b68d401eb1018e5f47201e5d84", "2c9a59b68d401eb1018e5f4720205d85"};
processScheduled.sendfpfielUpdown(headers, s); processScheduled.sendfpfielUpdown(headers, s);
} }
/**
* 发送文本邮件
* @param to
* @param subject
* @param text
*/
@GetMapping("/sendTextMail")
public void sendTextMail(String to,String subject,String text){
mailService.sendTextMailMessage(to,subject,text);
}
} }

13
src/main/java/com/example/guoyan/mapper/AttachMapper.java

@ -0,0 +1,13 @@
package com.example.guoyan.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
@Mapper
public interface AttachMapper extends BaseMapper<Object> {
HashMap<String,String> selectByid(@Param("id") String id);
}

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

@ -40,6 +40,7 @@ public interface OtherMapper extends BaseMapper<Object> {
void delPermissionuserBack(HashMap<String,String> map); void delPermissionuserBack(HashMap<String,String> map);
List<HashMap<String,String>> selectHtProcess(@Param("reqid") String id,@Param("setpid") String setpid); List<HashMap<String,String>> selectHtProcess(@Param("reqid") String id,@Param("setpid") String setpid);
List<HashMap<String,String>> selctscxmkp1by (@Param("project_no") String id,@Param("sslx") String setpid); List<HashMap<String,String>> selctscxmkp1by (@Param("project_no") String id,@Param("sslx") String setpid);
List<HashMap<String,String>> selectScKpsqsp_tuipiao_yptbh(@Param("requestid") String id);
// List<HashMap<String,String>> selectstaffbyid(@Param("number") String id); // List<HashMap<String,String>> selectstaffbyid(@Param("number") String id);
// List<HashMap<String,String>> selectsc_hh1byname(@Param("qymc") String id); // List<HashMap<String,String>> selectsc_hh1byname(@Param("qymc") String id);
// List<HashMap<String,String>> selectsc_lxr1byid (@Param("lxr") String id,@Param("qymc") String setpid); // List<HashMap<String,String>> selectsc_lxr1byid (@Param("lxr") String id,@Param("qymc") String setpid);

80
src/main/java/com/example/guoyan/scheduled/MailService.java

@ -0,0 +1,80 @@
package com.example.guoyan.scheduled;
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.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.mail.MessagingException;
import java.util.Date;
/**
* 邮件业务类
* @author qzz
*/
@Service
public class MailService {
private static final Logger logger = LoggerFactory.getLogger(MailService.class);
/**
* 注入邮件工具类
*/
@Autowired
private JavaMailSenderImpl javaMailSender;
@Value("${spring.mail.username}")
private String sendMailer;
/**
* 检测邮件信息类
* @param to
* @param subject
* @param text
*/
private void checkMail(String to,String subject,String text){
if(StringUtils.isEmpty(to)){
throw new RuntimeException("邮件收信人不能为空");
}
if(StringUtils.isEmpty(subject)){
throw new RuntimeException("邮件主题不能为空");
}
if(StringUtils.isEmpty(text)){
throw new RuntimeException("邮件内容不能为空");
}
}
/**
* 发送纯文本邮件
* @param to
* @param subject
* @param text
*/
public void sendTextMailMessage(String to,String subject,String text){
try {
//true 代表支持复杂的类型
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(),true);
//邮件发信人
mimeMessageHelper.setFrom(sendMailer);
//邮件收信人 1或多个
mimeMessageHelper.setTo(to.split(","));
//邮件主题
mimeMessageHelper.setSubject(subject);
//邮件内容
mimeMessageHelper.setText(text);
//邮件发送时间
mimeMessageHelper.setSentDate(new Date());
//发送邮件
javaMailSender.send(mimeMessageHelper.getMimeMessage());
System.out.println("发送邮件成功:"+sendMailer+"->"+to);
} catch (Exception e) {
e.printStackTrace();
System.out.println("发送邮件失败:"+e.getMessage());
}
}
}

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

@ -25,6 +25,9 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@ -91,6 +94,8 @@ public class ProcessScheduled {
private KpssProcessNode6IdInfo kpssProcessNode6IdInfo; private KpssProcessNode6IdInfo kpssProcessNode6IdInfo;
@Value("${ypt.htqxid}") @Value("${ypt.htqxid}")
private String htqxid; private String htqxid;
@Autowired
private MailService mailService;
private String[] industry = {"政党机关","公检法司","交通运输","医疗卫生","文体教育","农林牧渔", private String[] industry = {"政党机关","公检法司","交通运输","医疗卫生","文体教育","农林牧渔",
"通信电信","水利水电","航空航天","石油化工","环保绿化","海洋气象","金融保险","科研技术","商业服务","军队"}; "通信电信","水利水电","航空航天","石油化工","环保绿化","海洋气象","金融保险","科研技术","商业服务","军队"};
/** /**
@ -145,7 +150,6 @@ public class ProcessScheduled {
if ("ZJ".equals(qy)){ if ("ZJ".equals(qy)){
sendKpqrsrToYunPingtai(item,headers); sendKpqrsrToYunPingtai(item,headers);
} }
//开票确认到账 //开票确认到账
}else if (interfaceType==3&& "ZJ".equals(item.getQy())){ }else if (interfaceType==3&& "ZJ".equals(item.getQy())){
sendKpqrdzToYunPingtai(item,headers); sendKpqrdzToYunPingtai(item,headers);
@ -176,6 +180,12 @@ public class ProcessScheduled {
//把查到的数据按次序更新或新增到北京 //把查到的数据按次序更新或新增到北京
sendXmList.forEach(iteam -> { sendXmList.forEach(iteam -> {
iteam.setProjectDescription(null);//项目描述非必填项 iteam.setProjectDescription(null);//项目描述非必填项
String projectManagerCode = iteam.getProjectManagerCode();//特殊工号处理
if("0519039".equals(projectManagerCode)){
iteam.setProjectManagerCode("A300019");
} else if ("0520021".equals(projectManagerCode)) {
iteam.setProjectManagerCode("052002");
}
List<String> list = Arrays.asList(industry); List<String> list = Arrays.asList(industry);
String projectIndustry = iteam.getProjectIndustry(); String projectIndustry = iteam.getProjectIndustry();
if(!list.contains(projectIndustry)){ if(!list.contains(projectIndustry)){
@ -211,6 +221,9 @@ public class ProcessScheduled {
sendXmLambdaUpdateWrapper.eq(SendXm::getId,iteam.getId()); sendXmLambdaUpdateWrapper.eq(SendXm::getId,iteam.getId());
sendXmLambdaUpdateWrapper.set(SendXm::getErrormessage,responseData.getMessage().toString()); sendXmLambdaUpdateWrapper.set(SendXm::getErrormessage,responseData.getMessage().toString());
sendXmMapper.update(null, sendXmLambdaUpdateWrapper); sendXmMapper.update(null, sendXmLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn"
,"云平台新增项目失败,projectId是" + iteam.getProjectId() + " id是" + iteam.getId()
,"返回的信息是" + responseData.toString());
} }
} }
@ -227,6 +240,9 @@ public class ProcessScheduled {
sendXmLambdaUpdateWrapper.eq(SendXm::getId,iteam.getId()); sendXmLambdaUpdateWrapper.eq(SendXm::getId,iteam.getId());
sendXmLambdaUpdateWrapper.set(SendXm::getErrormessage,"云平台编号为空"); sendXmLambdaUpdateWrapper.set(SendXm::getErrormessage,"云平台编号为空");
sendXmMapper.update(null, sendXmLambdaUpdateWrapper); sendXmMapper.update(null, sendXmLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn"
,"云平台更新项目失败,projectId是" + iteam.getProjectId() + " id是" + iteam.getId()
,"云平台编号为空");
return; return;
} }
String name = iteam.getProjectNo()+"*"+iteam.getProjectName(); String name = iteam.getProjectNo()+"*"+iteam.getProjectName();
@ -251,6 +267,9 @@ public class ProcessScheduled {
sendXmLambdaUpdateWrapper.eq(SendXm::getId,iteam.getId()); sendXmLambdaUpdateWrapper.eq(SendXm::getId,iteam.getId());
sendXmLambdaUpdateWrapper.set(SendXm::getErrormessage,responseData.getMessage().toString()); sendXmLambdaUpdateWrapper.set(SendXm::getErrormessage,responseData.getMessage().toString());
sendXmMapper.update(null, sendXmLambdaUpdateWrapper); sendXmMapper.update(null, sendXmLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn"
,"云平台更新项目失败,projectId是" + iteam.getProjectId() + " id是" + iteam.getId()
,"返回的信息是" + responseData.toString());
} }
} }
}); });
@ -262,6 +281,9 @@ public class ProcessScheduled {
if("邀请招标".equals(winningBidWay)){ if("邀请招标".equals(winningBidWay)){
item.setWinningBidWay("内部邀请"); item.setWinningBidWay("内部邀请");
} }
if("询比采购".equals(winningBidWay)){
item.setWinningBidWay("公开招标");
}
//用项目id 查询项目金额 //用项目id 查询项目金额
HashMap<String,String> hashMap = new HashMap<>(); HashMap<String,String> hashMap = new HashMap<>();
String requestid = item.getRequestid(); String requestid = item.getRequestid();
@ -287,6 +309,9 @@ public class ProcessScheduled {
if (contractAmount.compareTo(amt)!=0){ if (contractAmount.compareTo(amt)!=0){
//更新数据需要所有字段都有值,所以去查最新的一笔更新记录,改一下合同金额 //更新数据需要所有字段都有值,所以去查最新的一笔更新记录,改一下合同金额
List<SendXm> sendXms = sendXmMapper.querySendXmByProjectId(item.getProjectId()); List<SendXm> sendXms = sendXmMapper.querySendXmByProjectId(item.getProjectId());
try {
if (sendXms.size() >= 0) {
SendXm sendXm = sendXms.get(0);//得到最新的一条已修改记录 SendXm sendXm = sendXms.get(0);//得到最新的一条已修改记录
sendXm.setContractAmount(contractAmount);//修改金额 sendXm.setContractAmount(contractAmount);//修改金额
sendXm.setProjectNo(item.getProjectNo());//修改项目编号 sendXm.setProjectNo(item.getProjectNo());//修改项目编号
@ -298,6 +323,14 @@ public class ProcessScheduled {
} else { } else {
log.info("更新项目金额失败,projectId是" + sendXm.getProjectId() + " id是" + sendXm.getId()); log.info("更新项目金额失败,projectId是" + sendXm.getProjectId() + " id是" + sendXm.getId());
log.info("返回的信息是" + responseData.toString()); log.info("返回的信息是" + responseData.toString());
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"云平台合同更新项目金额失败,projectId是" + sendXm.getProjectId() + " id是" + sendXm.getId()
, "返回的信息是" + responseData.toString());
}
}
}
catch (Exception e){
} }
} }
//0表示新增,要传到北京 //0表示新增,要传到北京
@ -329,6 +362,9 @@ public class ProcessScheduled {
sendHtLambdaUpdateWrapper.eq(SendHt::getId, item.getId());//更新条件 sendHtLambdaUpdateWrapper.eq(SendHt::getId, item.getId());//更新条件
sendHtLambdaUpdateWrapper.set(SendHt::getErrormessage,responseData.getMessage().toString());//更新的值 sendHtLambdaUpdateWrapper.set(SendHt::getErrormessage,responseData.getMessage().toString());//更新的值
sendHtMapper.update(null, sendHtLambdaUpdateWrapper); sendHtMapper.update(null, sendHtLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"云平台新增合同失败,projectId是" + item.getContractId() + " id是" + item.getId()
,"返回的信息是" + responseData.toString());
} }
} }
//修改 //修改
@ -365,6 +401,9 @@ public class ProcessScheduled {
sendHtLambdaUpdateWrapper.eq(SendHt::getId, item.getId());//更新条件 sendHtLambdaUpdateWrapper.eq(SendHt::getId, item.getId());//更新条件
sendHtLambdaUpdateWrapper.set(SendHt::getErrormessage,responseData.getMessage().toString());//更新的值 sendHtLambdaUpdateWrapper.set(SendHt::getErrormessage,responseData.getMessage().toString());//更新的值
sendHtMapper.update(null, sendHtLambdaUpdateWrapper); sendHtMapper.update(null, sendHtLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"云平台更新合同失败,projectId是" + item.getContractId() + " id是" + item.getId()
,"返回的信息是" + responseData.toString());
} }
} }
}); });
@ -390,18 +429,25 @@ public class ProcessScheduled {
} }
if("信息技术咨询监理服务费".equals(sendKpxx.getInvoiceContent())){ if("信息技术咨询监理服务费".equals(sendKpxx.getInvoiceContent())){
sendKpxx.setInvoiceContent("监理咨询服务费"); sendKpxx.setInvoiceContent("监理咨询服务费");
} else if ("信息监理运维服务费".equals(sendKpxx.getInvoiceContent())) {
sendKpxx.setInvoiceContent("运维监理服务费");
} }
if(StringUtils.isBlank(sendKpxx.getPayerNumber())){ if(StringUtils.isBlank(sendKpxx.getPayerNumber())){
sendKpxx.setPayerNumber("/"); sendKpxx.setPayerNumber("/");
} }
// sendKpxx.setApplyUserCode("0519999");
sendKpxx.setReceiptScheduleName(null); sendKpxx.setReceiptScheduleName(null);
//新增 //新增
if(sendKpxx.getEvidenceId()!=null){
String[] evidenceIds = sendKpxx.getEvidenceId().split(",");//获取文件id组 String[] evidenceIds = sendKpxx.getEvidenceId().split(",");//获取文件id组
String evidenceid= sendfpfielUpdown(headers,evidenceIds);//上传文件信息 String evidenceid= sendfpfielUpdown(headers,evidenceIds);//上传文件信息
// if() // if()
if(evidenceid.length()>0){ if(evidenceid.length()>0){
evidenceid=evidenceid.substring(0,evidenceid.length()-1); evidenceid=evidenceid.substring(0,evidenceid.length()-1);
} }
sendKpxx.setEvidenceId(evidenceid);
}
//因为会驳回,驳回后在提交就是修改状态,查询是否有退回记录,如果有要重新提交 //因为会驳回,驳回后在提交就是修改状态,查询是否有退回记录,如果有要重新提交
if(sendKpxx.getOperatetype()==1){ if(sendKpxx.getOperatetype()==1){
LambdaQueryWrapper<SendKpxx> sendKpxxLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SendKpxx> sendKpxxLambdaQueryWrapper = new LambdaQueryWrapper<>();
@ -437,19 +483,34 @@ public class ProcessScheduled {
String fplx = hashMapScKpsqsp.get("fplx"); String fplx = hashMapScKpsqsp.get("fplx");
String fpzl = hashMapScKpsqsp.get("fpzl"); String fpzl = hashMapScKpsqsp.get("fpzl");
//发票种类如果是电子发票 //发票种类如果是电子发票
if("2c9a59b680e0190f0181224a7a76045a".equals(fpzl)){ if("2c9a59b680e0190f0181224a7a76045a".equals(fpzl)&&"增值税普通发票".equals(sendKpxx.getInvoiceType())){
sendKpxx.setInvoiceType("增值税电子普通发票"); sendKpxx.setInvoiceType("增值税电子普通发票");
}else if("2c9a59b680e0190f0181224a5c740459".equals(fpzl)&&"数电专用发票".equals(sendKpxx.getInvoiceType())){
sendKpxx.setInvoiceType("增值税专用发票");
} }
if("2c9adae478fdbe15017906eca5710259".equals(fplx)){ String specialInfo = sendKpxx.getSpecialInfo();
String dz = hashMapScKpsqsp.get("dz"); if(specialInfo==null){
String dh = hashMapScKpsqsp.get("dh"); specialInfo="";
String zh = hashMapScKpsqsp.get("zh"); }
String khx = hashMapScKpsqsp.get("khx"); String dz = "";
String specialInfo= "开户行:"+khx+" ,账号:"+zh+" ,地址及电话:"+dz+dh; String dh = "";
sendKpxx.setSpecialInfo(specialInfo); String zh = "";
String khx ="";
if(hashMapScKpsqsp.get("dz")!=null){
dz = hashMapScKpsqsp.get("dz");
}
if(hashMapScKpsqsp.get("dh")!=null){
dh = hashMapScKpsqsp.get("dh");
}
if(hashMapScKpsqsp.get("zh")!=null){
zh = hashMapScKpsqsp.get("zh");
}
if(hashMapScKpsqsp.get("khx")!=null){
khx = hashMapScKpsqsp.get("khx");
} }
specialInfo+= "。开户行:"+khx+" ,账号:"+zh+" ,地址及电话:"+dz+dh;
sendKpxx.setSpecialInfo(specialInfo);
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
sendKpxx.setEvidenceId(evidenceid);
String xsfzr =""; String xsfzr ="";
//退票要先删掉原来的到账信息 //退票要先删掉原来的到账信息
String projectid = sendKpxx.getProjectNo();//项目编号,其他的是云平台编号 String projectid = sendKpxx.getProjectNo();//项目编号,其他的是云平台编号
@ -467,7 +528,14 @@ public class ProcessScheduled {
sendKpxx.setProjectNo(yptbh); sendKpxx.setProjectNo(yptbh);
if(yptbh ==null){ if(yptbh ==null){
log.info("开票申请更新项目西悉尼更新失败,projectId是" + iteam.getProjectId()); log.info("开票申请更新项目西悉尼更新失败,projectId是" + iteam.getProjectId());
log.info("云平台编号为空" ); log.info("项目开票云平台编号为空" );
LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "项目开票云平台编号为空");//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"新增退票开票信息失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"项目开票云平台编号为空" );
return; return;
} }
String name = iteam.getProjectNo()+"*"+iteam.getProjectName(); String name = iteam.getProjectNo()+"*"+iteam.getProjectName();
@ -485,6 +553,22 @@ public class ProcessScheduled {
} }
if(sendKpxx.getIsReturn()==1){ if(sendKpxx.getIsReturn()==1){
String requestid = sendKpxx.getRequestid();
HashMap<String, String> hashMap = otherMapper.selectScKpsqsp_tuipiao_yptbh(requestid).get(0);
if(hashMap==null||hashMap.get("yptbh")==null) {
log.info("退票发票信息为空");
log.info("新增退票开票信息失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId());
LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "退票发票云平台编号为空");//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"新增退票开票信息失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"退票发票云平台编号为空" );
return;
}
String yptbh = hashMap.get("yptbh");
sendKpxx.setInvoiceNo(yptbh);
deleteFpdzrq(headers,sendKpxx); deleteFpdzrq(headers,sendKpxx);
if(sendKpxx.getInvoiceNo()==null){ if(sendKpxx.getInvoiceNo()==null){
log.info("退票发票发票编号不能为空"); log.info("退票发票发票编号不能为空");
@ -493,9 +577,11 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "退票发票发票编号不能为空");//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "退票发票发票编号不能为空");//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"新增退票开票信息失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"退票发票发票编号不能为空" );
} }
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
sendKpxx.setEvidenceId(evidenceid);
sendKpxx.setReturnInvoiceNo(sendKpxx.getInvoiceNo()); sendKpxx.setReturnInvoiceNo(sendKpxx.getInvoiceNo());
HttpEntity<SendKpxx> request = new HttpEntity<>(sendKpxx, headers); HttpEntity<SendKpxx> request = new HttpEntity<>(sendKpxx, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(invoiceUrl,request, ResponseBeanForBeiJing.class); ResponseBeanForBeiJing responseData = restTemplate.postForObject(invoiceUrl,request, ResponseBeanForBeiJing.class);
@ -503,7 +589,16 @@ public class ProcessScheduled {
LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getStatus, 1);//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getStatus, 1);//更新的值
if(sendKpxx.getOperatetype()==1){
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getOperatetype, 0);//更新的值符合查询条件
}
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
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
log.info("新增退票开票信息到云平台成功"); log.info("新增退票开票信息到云平台成功");
log.info(responseData.toString()); log.info(responseData.toString());
} else { } else {
@ -513,6 +608,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"新增退票开票信息失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"返回的信息是" + responseData.toString());
} }
return; return;
} }
@ -541,12 +639,15 @@ public class ProcessScheduled {
} else { } else {
log.info("新增开票信息失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()); log.info("新增开票信息失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId());
log.error("返回的信息是" + responseData.toString()); log.error("返回的信息是" + responseData.toString());
log.info("项目编号是"+sendKpxx.toString());
//记录错误信息 //记录错误信息
LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getRequestid, sendKpxx.getRequestid());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getRequestid, sendKpxx.getRequestid());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"新增开票信息失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"返回的信息是" + responseData.toString());
} }
} }
// //修改 // //修改
@ -601,6 +702,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "发票发票编号不能为空");//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "发票发票编号不能为空");//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"开票收入报错,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"发票发票编号不能为空");
return; return;
} }
@ -614,6 +718,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, beanForBeiJing.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, beanForBeiJing.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"申请审批状态报错,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"报错信息" + beanForBeiJing.getMessage().toString());
return; return;
} }
Map dataMap = (Map) beanForBeiJing.getData(); Map dataMap = (Map) beanForBeiJing.getData();
@ -651,6 +758,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"新增开票确认失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"发票发票编号不能为空" + responseData.getMessage().toString());
} }
} }
//修改 //修改
@ -666,6 +776,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "invoiceNo发票发票编号不能为空");//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "invoiceNo发票发票编号不能为空");//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"新增开票确认收入失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"invoiceNo发票发票编号不能为空" );
return; return;
} }
String invoiceNo = stringStringHashMap.get("yptbh"); String invoiceNo = stringStringHashMap.get("yptbh");
@ -686,6 +799,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, beanForBeiJing.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, beanForBeiJing.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"申请审批状态报错,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"报错信息" + beanForBeiJing.getMessage().toString());
return; return;
} }
Map dataMap = (Map) beanForBeiJing.getData(); Map dataMap = (Map) beanForBeiJing.getData();
@ -722,6 +838,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"新增开票确认收入失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"报错信息" + responseData.getMessage().toString());
} }
} }
//修改 //修改
@ -749,7 +868,12 @@ public class ProcessScheduled {
LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getStatus, 1);//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getStatus, 1);//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
sendKpxxLambdaUpdateWrapper.clear();
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getWfrequest, sendKpxx.getWfrequest());//更新条件
sendKpxxLambdaUpdateWrapper.isNull(SendKpxx::getStatus);//更新条件
sendKpxxMapper.delete(sendKpxxLambdaUpdateWrapper);
log.info("删除后新增开票确认到云平台成功"); log.info("删除后新增开票确认到云平台成功");
log.info(responseData.toString()); log.info(responseData.toString());
return; return;
@ -759,12 +883,25 @@ public class ProcessScheduled {
LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getStatus, responseData.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getStatus, responseData.getMessage().toString());//更新的值
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"修改开票确认收入失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"报错信息" + responseData.getMessage().toString());
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
}else if (sendKpxx.getOperatetype()==2){ }else if (sendKpxx.getOperatetype()==2){
invoiceNo = otherMapper.selectScKpsqsp_yptbh_Byreqid(sendKpxx.getWfrequest()).get("yptbh"); invoiceNo = otherMapper.selectScKpsqsp_yptbh_Byreqid(sendKpxx.getWfrequest()).get("yptbh");
sendKpxx.setInvoiceNo(invoiceNo); sendKpxx.setInvoiceNo(invoiceNo);
sendKpxx.setOpFlag(1); sendKpxx.setOpFlag(1);
String incomeId = otherMapper.selectScKpcwqrsr_incomeId_Bylcid(sendKpxx.getWfrequest()).get("incomeId"); String incomeId ="";
try {
incomeId = otherMapper.selectScKpcwqrsr_incomeId_Bylcid(sendKpxx.getWfrequest()).get("incomeId");
}catch (Exception e){
LambdaUpdateWrapper<SendKpxx> sendKpxxLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "不存在incomeId");//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
return;
}
sendKpxx.setIncomeId(incomeId); sendKpxx.setIncomeId(incomeId);
HttpEntity<SendKpxx> request1 = new HttpEntity<>(sendKpxx, headers); HttpEntity<SendKpxx> request1 = new HttpEntity<>(sendKpxx, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(incomeUrl,request1, ResponseBeanForBeiJing.class); ResponseBeanForBeiJing responseData = restTemplate.postForObject(incomeUrl,request1, ResponseBeanForBeiJing.class);
@ -784,6 +921,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"删除开票确认收入失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"报错信息" + responseData.getMessage().toString());
} }
} }
} }
@ -798,6 +938,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "invoiceNo发票发票编号不能为空");//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, "invoiceNo发票发票编号不能为空");//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"确认收入到账失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"invoiceNo发票发票编号不能为空");
return; return;
} }
String invoiceNo = stringStringHashMap.get("yptbh"); String invoiceNo = stringStringHashMap.get("yptbh");
@ -818,6 +961,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, beanForBeiJing.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, beanForBeiJing.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"查询审批状态,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"报错信息" + beanForBeiJing.getMessage().toString());
return; return;
} }
Map dataMap = (Map) beanForBeiJing.getData(); Map dataMap = (Map) beanForBeiJing.getData();
@ -854,6 +1000,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"删除开票确认到账失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"报错信息" + responseData.getMessage().toString());
} }
} }
//修改 //修改
@ -891,6 +1040,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件 sendKpxxLambdaUpdateWrapper.eq(SendKpxx::getId, sendKpxx.getId());//更新条件
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"修改开票确认收入失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"报错信息" + responseData.getMessage().toString());
} }
} }
@ -899,6 +1051,12 @@ public class ProcessScheduled {
List<SendKpxx> sendKpxxToYPTList = sendKpxxMapper.querySendToYPT(); List<SendKpxx> sendKpxxToYPTList = sendKpxxMapper.querySendToYPT();
sendKpxxToYPTList.forEach(item->{ sendKpxxToYPTList.forEach(item->{
String invoiceNo = item.getInvoiceNo(); String invoiceNo = item.getInvoiceNo();
if(invoiceNo==null){
String requestid = item.getRequestid();
HashMap<String, String> hashMap = otherMapper.selectScKpsqsp_tuipiao_yptbh(requestid).get(0);
String yptbh = hashMap.get("yptbh");
invoiceNo=yptbh;
}
HttpEntity<Object> request = new HttpEntity<>(null, headers); HttpEntity<Object> request = new HttpEntity<>(null, headers);
ResponseEntity<ResponseBeanForBeiJing> exchange = restTemplate.exchange(InvoicingApprovalStatusUrl+"/"+invoiceNo, HttpMethod.GET, request, ResponseBeanForBeiJing.class); ResponseEntity<ResponseBeanForBeiJing> exchange = restTemplate.exchange(InvoicingApprovalStatusUrl+"/"+invoiceNo, HttpMethod.GET, request, ResponseBeanForBeiJing.class);
ResponseBeanForBeiJing beanForBeiJing = exchange.getBody(); ResponseBeanForBeiJing beanForBeiJing = exchange.getBody();
@ -913,7 +1071,6 @@ public class ProcessScheduled {
Map dataMap = (Map) beanForBeiJing.getData(); Map dataMap = (Map) beanForBeiJing.getData();
Integer status = (Integer) dataMap.get("status"); Integer status = (Integer) dataMap.get("status");
Date nowData = new Date(); Date nowData = new Date();
if (status==2 || status==4){//已确认 if (status==2 || status==4){//已确认
//更新这边的流程 //更新这边的流程
String processId = sendKpxxMapper.selectProcessId(item.getRequestid()); String processId = sendKpxxMapper.selectProcessId(item.getRequestid());
@ -1100,33 +1257,82 @@ public class ProcessScheduled {
}); });
} }
//发送发票文件 //发送发票文件
public String sendfpfielUpdown(HttpHeaders headers,String[] evidenceIds){ // public String sendfpfielUpdown(HttpHeaders headers,String[] evidenceIds){
String evidenceid=""; // String evidenceid="";
for (String id:evidenceIds) { // for (String id:evidenceIds) {
//查询 // //查询
// HashMap<String, String> fileMap = otherMapper.selectFileById(id);
// String filePath = fileMap.get("filepath");
// String originalName = fileMap.get("originalName");
// filePath =fileDownPre+filePath;
// File file1 = new File(filePath);
// //文件不存在 创建文件夹
// if(!file1.exists()){
// file1.mkdirs();
// }
// String newfilepath = filePath+File.separator+originalName;
// downloadFileFromSshServer(filePath,newfilepath);
// File file = new File(newfilepath);
// if(file.exists()){
// headers.setContentType(MediaType.MULTIPART_FORM_DATA);
// MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
// body.add("file", new FileSystemResource(new File(newfilepath)));
// 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 String sendfpfielUpdown(HttpHeaders headers, String[] evidenceIds) {
String evidenceid = "";
for (String id : evidenceIds) {
File tempFile = null;
try {
// 查询文件信息
HashMap<String, String> fileMap = otherMapper.selectFileById(id); HashMap<String, String> fileMap = otherMapper.selectFileById(id);
String filePath = fileMap.get("filepath"); String filePath = fileDownPre + fileMap.get("filepath");
String originalName = fileMap.get("originalName"); String originalName = fileMap.get("originalName");
filePath =fileDownPre+filePath;
File file1 = new File(filePath); // 构建原文件
//文件不存在 创建文件夹 File originalFile = new File(filePath);
if(!file1.exists()){ if (originalFile.exists()) {
file1.mkdirs(); // 在同目录下创建使用原始文件名的临时文件
} tempFile = new File(originalFile.getParent(), originalName);
String newfilepath = filePath+File.separator+originalName;
downloadFileFromSshServer(filePath,newfilepath); // 复制文件
File file = new File(newfilepath); Files.copy(originalFile.toPath(), tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
if(file.exists()){
// 设置请求头和请求体
headers.setContentType(MediaType.MULTIPART_FORM_DATA); headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>(); MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", new FileSystemResource(new File(newfilepath))); body.add("file", new FileSystemResource(tempFile));
// 发送请求
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(body, headers); HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(body, headers);
ResponseBeanForBeiJing responseData = restTemplate.postForObject(uploadFileUrl ,request, ResponseBeanForBeiJing.class); ResponseBeanForBeiJing responseData = restTemplate.postForObject(uploadFileUrl, request, ResponseBeanForBeiJing.class);
//文件处理
// 处理响应
String dataString = responseData.getData().toString(); String dataString = responseData.getData().toString();
evidenceid = evidenceid+dataString+","; evidenceid = evidenceid + dataString + ",";
}else { } else {
log.info("文件不存在,文件位置"+filePath); log.info("文件不存在,文件位置:" + filePath);
}
} catch (Exception e) {
log.error("文件处理过程发生错误", e);
} finally {
// 删除临时文件
if (tempFile != null && tempFile.exists()) {
try {
Files.delete(tempFile.toPath());
} catch (IOException e) {
log.error("临时文件删除失败:" + tempFile.getAbsolutePath(), e);
}
}
} }
} }
return evidenceid; return evidenceid;
@ -1181,6 +1387,9 @@ public class ProcessScheduled {
sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值 sendKpxxLambdaUpdateWrapper.set(SendKpxx::getErrormessage, responseData.getMessage().toString());//更新的值
sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper); sendKpxxMapper.update(null, sendKpxxLambdaUpdateWrapper);
log.info("删除到账信息失败"+responseData.toString()); log.info("删除到账信息失败"+responseData.toString());
mailService.sendTextMailMessage("yuanyuan.jin@srit.com.cn",
"删除到账信息失败,projectId是" + sendKpxx.getProjectNo() + " id是" + sendKpxx.getId()
,"删除到账信息失败"+responseData.toString());
} }
return false; return false;
} }

2
src/main/resources/application-prod.yml

@ -12,7 +12,7 @@ spring:
logging: logging:
# 配置日志文件存储位置 # 配置日志文件存储位置
file: file:
path: /opt/log path: /opt/guoyanlog
ypt: ypt:
username: '0519999' username: '0519999'
xmhtusername: '0510002' xmhtusername: '0510002'

28
src/main/resources/application.yml

@ -1,5 +1,5 @@
server: server:
port: 9002 port: 8002
spring: spring:
application: application:
@ -9,7 +9,33 @@ spring:
# 是否允许定义重名的bean对象覆盖原有的bean (spring boot默认是false) # 是否允许定义重名的bean对象覆盖原有的bean (spring boot默认是false)
# main: # main:
# allow-bean-definition-overriding: true # allow-bean-definition-overriding: true
mail:
#配置smtp服务主机地址
# qq邮箱为smtp.qq.com 端口号465或587
# sina smtp.sina.cn
# aliyun smtp.aliyun.com
# 163 smtp.163.com 端口号465或994
host: smtp.qq.com
#发送者邮箱
username: 852702845@qq.com
#配置密码,注意不是真正的密码,而是刚刚申请到的授权码
password: rmrifkwcmmhybbac
#端口号465或587
port: 587
#默认的邮件编码为UTF-8
default-encoding: UTF-8
#其他参数
properties:
mail:
#配置SSL 加密工厂
smtp:
ssl:
#本地测试,先放开ssl
enable: false
required: false
#开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误
debug: true
mybatis-plus: mybatis-plus:
configuration: configuration:
#在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,开启按照驼峰命名法映射 #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,开启按照驼峰命名法映射

9
src/main/resources/mapper/AttachMapper.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.guoyan.mapper.AttachMapper">
<select id="selectByid" resultType="Map">
select filepath,filename ,originalName as originalname,filetype from attach where id = #{id}
</select>
</mapper>

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

@ -71,4 +71,8 @@
<select id="selctscxmkp1by" resultType="Map"> <select id="selctscxmkp1by" resultType="Map">
select * from sc_xmkp1 where xmbh = #{project_no} and sslx=#{sslx} select * from sc_xmkp1 where xmbh = #{project_no} and sslx=#{sslx}
</select> </select>
<select id="selectScKpsqsp_tuipiao_yptbh" resultType="Map">
select yptbh from sc_kpsqsp where id =(
select tpxm from sc_kpsqsp where id = #{requestid})
</select>
</mapper> </mapper>

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

@ -60,7 +60,8 @@
remark_info, remark_info,
special_info, special_info,
evidence_id, evidence_id,
(SELECT number0 from staff b WHERE b.id = apply_user_code) as apply_user_code,
(SELECT number0 from staff b WHERE b.id = (select xsfzr from sc_xmkp1 where id =project_no)) as apply_user_code,
confirm_date, confirm_date,
(SELECT number0 from staff b WHERE b.id = confirm_user_code) confirm_user_code, (SELECT number0 from staff b WHERE b.id = confirm_user_code) confirm_user_code,
income_date, income_date,
@ -101,7 +102,7 @@
remark_info, remark_info,
special_info, special_info,
evidence_id, evidence_id,
(SELECT number0 from staff b WHERE b.id = apply_user_code) as apply_user_code, (SELECT number0 from staff b WHERE b.id = (select xsfzr from sc_xmkp1 where id =project_no)) as apply_user_code,
confirm_date, confirm_date,
(SELECT number0 from staff b WHERE b.id = confirm_user_code) confirm_user_code, (SELECT number0 from staff b WHERE b.id = confirm_user_code) confirm_user_code,
income_date, income_date,

Loading…
Cancel
Save