From b01c777857526921bde07aa4013733bae198c644 Mon Sep 17 00:00:00 2001 From: 0519049 Date: Sun, 14 Jan 2024 22:07:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 + .../guoyan/common/RestTempErrorHandler.java | 72 ++ .../guoyan/config/RestTemplateConfig.java | 8 +- .../guoyan/controller/TestController.java | 142 ++++ .../guoyan/entity/KpssProcessNode6IdInfo.java | 25 + .../guoyan/entity/Permissionrulegroup.java | 63 ++ .../com/example/guoyan/entity/Requestlog.java | 2 +- .../com/example/guoyan/entity/SendHt.java | 77 +++ .../com/example/guoyan/entity/SendKpxx.java | 139 ++++ .../com/example/guoyan/entity/SendXm.java | 113 ++++ .../example/guoyan/mapper/OtherMapper.java | 37 ++ .../mapper/PermissionrulegroupMapper.java | 9 + .../guoyan/mapper/RequestlogMapper.java | 2 + .../guoyan/mapper/RequestoperatorMapper.java | 2 + .../guoyan/mapper/RequeststatusMapper.java | 2 + .../example/guoyan/mapper/ScKpsqspMapper.java | 3 + .../example/guoyan/mapper/ScXglcMapper.java | 2 + .../example/guoyan/mapper/SendHtMapper.java | 12 + .../example/guoyan/mapper/SendKpxxMapper.java | 17 + .../example/guoyan/mapper/SendXmMapper.java | 19 + .../guoyan/mapper/WfrequestMapper.java | 2 + .../guoyan/scheduled/ProcessScheduled.java | 623 +++++++++++++++++- src/main/resources/application-dev.yml | 31 +- src/main/resources/application-prod.yml | 26 +- src/main/resources/application.yml | 7 +- src/main/resources/mapper/OtherMapper.xml | 48 ++ src/main/resources/mapper/SendHtMapper.xml | 47 ++ src/main/resources/mapper/SendKpxxMapper.xml | 89 +++ src/main/resources/mapper/SendXmMapper.xml | 119 ++++ 29 files changed, 1727 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/example/guoyan/common/RestTempErrorHandler.java create mode 100644 src/main/java/com/example/guoyan/controller/TestController.java create mode 100644 src/main/java/com/example/guoyan/entity/KpssProcessNode6IdInfo.java create mode 100644 src/main/java/com/example/guoyan/entity/Permissionrulegroup.java create mode 100644 src/main/java/com/example/guoyan/entity/SendHt.java create mode 100644 src/main/java/com/example/guoyan/entity/SendKpxx.java create mode 100644 src/main/java/com/example/guoyan/entity/SendXm.java create mode 100644 src/main/java/com/example/guoyan/mapper/OtherMapper.java create mode 100644 src/main/java/com/example/guoyan/mapper/PermissionrulegroupMapper.java create mode 100644 src/main/java/com/example/guoyan/mapper/SendHtMapper.java create mode 100644 src/main/java/com/example/guoyan/mapper/SendKpxxMapper.java create mode 100644 src/main/java/com/example/guoyan/mapper/SendXmMapper.java create mode 100644 src/main/resources/mapper/OtherMapper.xml create mode 100644 src/main/resources/mapper/SendHtMapper.xml create mode 100644 src/main/resources/mapper/SendKpxxMapper.xml create mode 100644 src/main/resources/mapper/SendXmMapper.xml diff --git a/pom.xml b/pom.xml index 2570047..9104bb2 100644 --- a/pom.xml +++ b/pom.xml @@ -94,6 +94,11 @@ org.springframework.boot spring-boot-starter-jdbc + + org.apache.httpcomponents + httpmime + 4.5.8 + com.github.xiaoymin diff --git a/src/main/java/com/example/guoyan/common/RestTempErrorHandler.java b/src/main/java/com/example/guoyan/common/RestTempErrorHandler.java new file mode 100644 index 0000000..bedb6db --- /dev/null +++ b/src/main/java/com/example/guoyan/common/RestTempErrorHandler.java @@ -0,0 +1,72 @@ +package com.example.guoyan.common; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpMethod; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.stereotype.Component; +import org.springframework.web.client.ResponseErrorHandler; + +import java.io.IOException; +import java.net.URI; + +@Component +/** + * 自定义Http响应异常处理器 + * @author chuanjieyang + * @since May 23, 2019 10:49:33 AM + */ +public class RestTempErrorHandler implements ResponseErrorHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(RestTempErrorHandler.class); + + /** + * 返回false表示不管response的status是多少都返回没有错 + * 这里可以自己定义那些status code你认为是可以抛Error + * Indicate whether the given response has any errors. + *

Implementations will typically inspect the + * {@link ClientHttpResponse#getStatusCode() HttpStatus} of the response. + * + * @param response the response to inspect + * @return {@code true} if the response indicates an error; {@code false} otherwise + * @throws IOException in case of I/O errors + */ + @Override + public boolean hasError(ClientHttpResponse response) throws IOException { + return response.getStatusCode().value() != 200 && response.getStatusCode().value() !=302; + } + + /** + * 这里面可以实现你自己遇到了Error进行合理的处理 + * Handle the error in the given response. + *

This method is only called when {@link #hasError(ClientHttpResponse)} + * has returned {@code true}. + * + * @param response the response with the error + * @throws IOException in case of I/O errors + */ + @Override + public void handleError(ClientHttpResponse response) throws IOException { + + } + + /** + * 替代上面的方法 + * Alternative to {@link #handleError(ClientHttpResponse)} with extra + * information providing access to the request URL and HTTP method. + * + * @param url the request URL + * @param method the HTTP method + * @param response the response with the error + * @throws IOException in case of I/O errors + * @since 5.0 + */ + @Override + public void handleError(URI url, HttpMethod method, ClientHttpResponse response) throws IOException { + LOGGER.error("=======================ERROR============================"); + LOGGER.error("HOST:{},URI:{}", url.getHost(),url.getPath()); + LOGGER.error("Method:{}", method.name()); + LOGGER.error("Exception:{}", response.getStatusCode()); + LOGGER.error("========================================================"); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/guoyan/config/RestTemplateConfig.java b/src/main/java/com/example/guoyan/config/RestTemplateConfig.java index 2d8ec7b..11034a6 100644 --- a/src/main/java/com/example/guoyan/config/RestTemplateConfig.java +++ b/src/main/java/com/example/guoyan/config/RestTemplateConfig.java @@ -1,5 +1,6 @@ package com.example.guoyan.config; +import com.example.guoyan.common.RestTempErrorHandler; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import org.apache.http.Header; @@ -62,8 +63,11 @@ public class RestTemplateConfig { @Bean - public RestTemplate restTemplate() { - return new RestTemplate(httpRequestFactory()); + public RestTemplate restTemplate(RestTemplateBuilder builder,HttpClient httpClient) { + RestTemplate restTemplate = builder + .errorHandler(new RestTempErrorHandler()) + .build(); + return restTemplate; } @Bean diff --git a/src/main/java/com/example/guoyan/controller/TestController.java b/src/main/java/com/example/guoyan/controller/TestController.java new file mode 100644 index 0000000..88cc2c5 --- /dev/null +++ b/src/main/java/com/example/guoyan/controller/TestController.java @@ -0,0 +1,142 @@ +package com.example.guoyan.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.example.guoyan.common.Result; +import com.example.guoyan.entity.SendHt; +import com.example.guoyan.entity.SendKpxx; +import com.example.guoyan.entity.SendXm; +import com.example.guoyan.mapper.*; +import com.example.guoyan.response.ResponseBeanForBeiJing; +import com.example.guoyan.scheduled.ProcessScheduled; +import lombok.extern.slf4j.Slf4j; +import org.apache.http.entity.ContentType; +import org.springframework.beans.factory.annotation.Autowired; + +import org.springframework.core.io.FileSystemResource; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +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.annotation.Resource; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +@RestController +@RequestMapping("/test") +@Slf4j +public class TestController { + @Resource + private RestTemplate restTemplate; + @Autowired + private SendXmMapper sendXmMapper; + @Autowired + private SendHtMapper sendHtMapper; + @Autowired + private OtherMapper otherMapper; + + @Autowired + private SendKpxxMapper sendKpxxMapper; + + @Autowired + private ProcessScheduled processScheduled; + @GetMapping() + public Result upLoadFile() { + + return Result.success("成功"); + } + @GetMapping("/c") + public Result test1(){ + + List sendKpxxList = sendKpxxMapper.querySendKpxxByNoDel(); + String url = "http://123.57.82.48:13310/api/auth/login"; + //提交参数设置 + HashMap map = new HashMap<>(); + map.put("username", "0519999"); + map.put("password", "123456"); + + //发起请求 + ResponseBeanForBeiJing responseBean = restTemplate.postForObject(url, map, ResponseBeanForBeiJing.class); + System.out.println(responseBean.toString()); + String data = responseBean.getData().toString(); + HttpHeaders headers = new HttpHeaders(); + 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); + } + }); + + return Result.success("成功"); + } + + @GetMapping("/a") + public Result testt() { + + List sendHtList = sendHtMapper.querySendHtByNoDel(); + String url = "http://123.57.82.48:13310/api/auth/login"; + //提交参数设置 + HashMap map = new HashMap<>(); + map.put("username", "0519999"); + map.put("password", "123456"); + + //发起请求 + ResponseBeanForBeiJing responseBean = restTemplate.postForObject(url, map, ResponseBeanForBeiJing.class); + System.out.println(responseBean.toString()); + String data = responseBean.getData().toString(); + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", data); + processScheduled.sendHtToYunPingtai(sendHtList,headers); + return Result.success("成功"); + } + + @GetMapping("/t") + public Result test() { + + List sendXmList = sendXmMapper.querySendXmByNoDel(); + String url = "http://123.57.82.48:13310/api/auth/login"; + //提交参数设置 + HashMap map = new HashMap<>(); + map.put("username", "0519999"); + map.put("password", "123456"); + + //发起请求 + ResponseBeanForBeiJing responseBean = restTemplate.postForObject(url, map, ResponseBeanForBeiJing.class); + System.out.println(responseBean.toString()); + String data = responseBean.getData().toString(); + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", data); + processScheduled.sendXmToYunPingtai(sendXmList, 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 new file mode 100644 index 0000000..759b892 --- /dev/null +++ b/src/main/java/com/example/guoyan/entity/KpssProcessNode6IdInfo.java @@ -0,0 +1,25 @@ +package com.example.guoyan.entity; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Data +@Component +public class KpssProcessNode6IdInfo { + @Value("${kpssProcessNode6IdInfo.perStepid}") + private String perStepid; + @Value("${kpssProcessNode6IdInfo.currentStepid}") + private String currentStepid; + @Value("${kpssProcessNode6IdInfo.currentStaffid}") + private String currentStaffid; + @Value("${kpssProcessNode6IdInfo.nextStepid}") + private String nextStepid; + @Value("${kpssProcessNode6IdInfo.nextTypeid}") + private String nextTypeid; + @Value("${kpssProcessNode6IdInfo.nextAllowStaffids}") + private String nextAllowStaffids; + @Value("${kpssProcessNode6IdInfo.nextStepOperid}") + private String nextStepOperid; + +} diff --git a/src/main/java/com/example/guoyan/entity/Permissionrulegroup.java b/src/main/java/com/example/guoyan/entity/Permissionrulegroup.java new file mode 100644 index 0000000..9551b2a --- /dev/null +++ b/src/main/java/com/example/guoyan/entity/Permissionrulegroup.java @@ -0,0 +1,63 @@ +package com.example.guoyan.entity; + +import lombok.Data; + +import java.io.Serializable; + +/** + * (Permissionrulegroup)实体类 + * + * @author makejava + * @since 2024-01-12 13:26:39 + */ +@Data +public class Permissionrulegroup implements Serializable { + private static final long serialVersionUID = -89320443451328585L; + + private String typeid; + + private String restype; + + private String resid; + + private Integer operate; + + private Integer optquery; + + private Integer optcreate; + + private Integer optupdate; + + private Integer optdelete; + + private Integer optmanage; + + private String pageid; + + private Integer minlevel; + + private Integer maxlevel; + + private Integer ntmp; + + private String stmp; + + private String id; + + private Integer dsporder; + + private String layoutview; + + private String layoutedit; + + private String layoutprint; + + private String adddate; + + private String rulewhere; + + private String allowstaffids; + + private Integer matrixtype; +} + diff --git a/src/main/java/com/example/guoyan/entity/Requestlog.java b/src/main/java/com/example/guoyan/entity/Requestlog.java index 3a91be6..ab9b6c7 100644 --- a/src/main/java/com/example/guoyan/entity/Requestlog.java +++ b/src/main/java/com/example/guoyan/entity/Requestlog.java @@ -1,6 +1,7 @@ package com.example.guoyan.entity; import lombok.Data; +import org.springframework.boot.context.properties.bind.DefaultValue; import java.io.Serializable; @@ -17,7 +18,6 @@ public class Requestlog implements Serializable { private String requestid; private String staffid; - private Integer isedit; private String createdate; diff --git a/src/main/java/com/example/guoyan/entity/SendHt.java b/src/main/java/com/example/guoyan/entity/SendHt.java new file mode 100644 index 0000000..86166a0 --- /dev/null +++ b/src/main/java/com/example/guoyan/entity/SendHt.java @@ -0,0 +1,77 @@ +package com.example.guoyan.entity; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * (SendHt)实体类 + * + * @author makejava + * @since 2024-01-10 17:25:07 + */ +@Data +public class SendHt implements Serializable { + private static final long serialVersionUID = 858146175447648096L; + + private Integer id; + /** + * 合同编号 + */ + private String contractCode; + /** + * 合同名称 + */ + private String contractName; + /** + * 项目编号 + */ + private String projectNo; + /** + * 项目ID + */ + private String projectId; + /** + * 是否高新 + */ + private String highTech; + /** + * 中标方式 + */ + private String winningBidWay; + /** + * 合同金额 + */ + private Double contractAmount; + /** + * 是否签出 + */ + private String signOut; + /** + * 是否签回 + */ + private String signIn; + /** + * 确认日期 + */ + private String confirmDate; + /** + * 创建时间 + */ + private Date addtime; + /** + * 状态 + */ + private String status; + /** + * 操作类型,0:新增,1:修改 + */ + private String operatetype; + /** + * 合同id + */ + private String contractId; + +} + diff --git a/src/main/java/com/example/guoyan/entity/SendKpxx.java b/src/main/java/com/example/guoyan/entity/SendKpxx.java new file mode 100644 index 0000000..0054321 --- /dev/null +++ b/src/main/java/com/example/guoyan/entity/SendKpxx.java @@ -0,0 +1,139 @@ +package com.example.guoyan.entity; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * (SendKpxx)实体类 + * + * @author makejava + * @since 2024-01-10 21:51:56 + */ +@Data +public class SendKpxx implements Serializable { + private static final long serialVersionUID = -50863336481165055L; + + private Integer id; + /** + * sc_kpspsq的id + */ + private String requestid; + /** + * 开票id + */ + private String invoiceNo; + /** + * 开票日期 + */ + private String invoiceDate; + /** + * 项目编号 + */ + private String projectNo; + /** + * 合同收款进度 + */ + private String receiptScheduleName; + /** + * 付款方名称 + */ + private String payerName; + /** + * 纳税识别号 + */ + private String payerNumber; + /** + * 开票金额 + */ + private Double invoiceAmount; + /** + * 开票内容 + */ + private String invoiceContent; + /** + * 付款方式 + */ + private String paymentMode; + /** + * 发票类型 + */ + private String invoiceType; + /** + * 发票备注 + */ + private String remarkInfo; + /** + * 特殊说明 + */ + private String specialInfo; + /** + * 证明文件 + */ + private String evidenceId; + /** + * 申请员工编号 + */ + private String applyUserCode; + /** + * 开票时间 + */ + private String confirmDate; + /** + * 开票员工id + */ + private String confirmUserCode; + /** + * 确认收入日期 + */ + private String incomeDate; + /** + * 确认收入金额 + */ + private Double incomeAmount; + /** + * 确认收入操作员工id + */ + private String incomeUserCode; + /** + * 到账时间 + */ + private String accountDate; + /** + * 到账金额 + */ + private Double accountAmount; + /** + * 到账操作员工id + */ + private String accountUserCode; + /** + * 创建时间 + */ + private Date createtime; + /** + * 状态 + */ + private Integer status; + /** + * 操作类型,0新增,1修改 + */ + private Integer operatetype; + /** + * 类型 + */ + private Integer interfaceType; + /** + * 操作标记 0 新增;1 删除 + */ + private Integer opFlag; + /** + * 操作员工编码 + */ + private String opUserCode; + private String wfrequest; + private String incomeId; + private String accountId; +} + diff --git a/src/main/java/com/example/guoyan/entity/SendXm.java b/src/main/java/com/example/guoyan/entity/SendXm.java new file mode 100644 index 0000000..6439430 --- /dev/null +++ b/src/main/java/com/example/guoyan/entity/SendXm.java @@ -0,0 +1,113 @@ +package com.example.guoyan.entity; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * (SendXm)实体类 + * + * @author makejava + * @since 2024-01-10 13:59:54 + */ +@Data +public class SendXm implements Serializable { + private static final long serialVersionUID = -66646432538806807L; + + private Long id; + private String projectId; + /** + * 项目编号 + */ + private String projectNo; + /** + * 项目名称 + */ + private String projectName; + /** + * 项目类型 + */ + private String projectType; + /** + * 所属区域 + */ + private String areaCode; + /** + * 客户类别 + */ + private Integer projectSecret; + /** + * 销售负责人 + */ + private String salesLeaderCode; + /** + * 名义总监 + */ + private String nominalDirectorCode; + /** + * 实施部门 + */ + private String deptCode; + /** + * 实施负责人 + */ + private String projectManagerCode; + /** + * 项目金额 + */ + private Double contractAmount; + /** + * 投资金额 + */ + private Double projectConstructionScale; + /** + * 甲方单位名称 + */ + private String projectCompany; + /** + * 项目起始时间 + */ + private String projectStartDate; + /** + * 项目截止时间 + */ + private String projectEndDate; + /** + * 所属行业 + */ + private String projectIndustry; + /** + * 所属类型 + */ + private String projectCaseType; + /** + * 用户属性 + */ + private String projectUserProperty; + /** + * 项目描述 + */ + private String projectDescription; + /** + * 项目备注 + */ + private String remarks; + /** + * 创建时间 + */ + private Date createtime; + /** + * 状态 + */ + private Integer status; + /** + * 0:新增,1:修改,2:删除 + */ + private Integer operatetype; + + private Double fyys; + + +} + diff --git a/src/main/java/com/example/guoyan/mapper/OtherMapper.java b/src/main/java/com/example/guoyan/mapper/OtherMapper.java new file mode 100644 index 0000000..6ef5e9a --- /dev/null +++ b/src/main/java/com/example/guoyan/mapper/OtherMapper.java @@ -0,0 +1,37 @@ +package com.example.guoyan.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.guoyan.entity.SendXm; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.HashMap; +import java.util.List; + +@Mapper +public interface OtherMapper extends BaseMapper { + + void updateScXMkp1_yptbh_ByPjid(HashMap map); + + HashMap selectScXMkp1_yptbh_ByPjid(@Param("projectID") String id); + void updateScHTLC_yptbh_ByPjid(HashMap map); + + HashMap selectScHTLC_yptbh_ByPjid(@Param("contractId") String id); + + String selectXmAmount(@Param("id") String id); + + HashMap selectFileById(@Param("id") String id); + void updateScKpsqsp_yptbh_Byid(HashMap map); + + HashMap selectScKpsqsp_yptbh_ByPjid(@Param("id") String id); + + void updateScKpcwqrsr_incomeId_Byid(HashMap map); + + HashMapselectScKpcwqrsr_incomeId_Bylcid(@Param("lcid") String id); + + void updateScKpsqsp_accountId_Byid(HashMap map); + HashMap selectScKpcwqrsr_accountId_Bylcid(@Param("id") String id); + HashMap selectScKpsqsp_yptbh_Byreqid(@Param("requestid") String id); + + List> selectProcessNo5IsSubmit(@Param("reqid") String id,@Param("setpid") String setpid); +} diff --git a/src/main/java/com/example/guoyan/mapper/PermissionrulegroupMapper.java b/src/main/java/com/example/guoyan/mapper/PermissionrulegroupMapper.java new file mode 100644 index 0000000..02dae66 --- /dev/null +++ b/src/main/java/com/example/guoyan/mapper/PermissionrulegroupMapper.java @@ -0,0 +1,9 @@ +package com.example.guoyan.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.guoyan.entity.Permissionrulegroup; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface PermissionrulegroupMapper extends BaseMapper { +} diff --git a/src/main/java/com/example/guoyan/mapper/RequestlogMapper.java b/src/main/java/com/example/guoyan/mapper/RequestlogMapper.java index 8c55eac..b75494c 100644 --- a/src/main/java/com/example/guoyan/mapper/RequestlogMapper.java +++ b/src/main/java/com/example/guoyan/mapper/RequestlogMapper.java @@ -2,6 +2,8 @@ package com.example.guoyan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.guoyan.entity.Requestlog; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface RequestlogMapper extends BaseMapper { } diff --git a/src/main/java/com/example/guoyan/mapper/RequestoperatorMapper.java b/src/main/java/com/example/guoyan/mapper/RequestoperatorMapper.java index f8f8737..63ebd6a 100644 --- a/src/main/java/com/example/guoyan/mapper/RequestoperatorMapper.java +++ b/src/main/java/com/example/guoyan/mapper/RequestoperatorMapper.java @@ -2,6 +2,8 @@ package com.example.guoyan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.guoyan.entity.Requestoperator; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface RequestoperatorMapper extends BaseMapper { } diff --git a/src/main/java/com/example/guoyan/mapper/RequeststatusMapper.java b/src/main/java/com/example/guoyan/mapper/RequeststatusMapper.java index 7c87c9e..ff2ab05 100644 --- a/src/main/java/com/example/guoyan/mapper/RequeststatusMapper.java +++ b/src/main/java/com/example/guoyan/mapper/RequeststatusMapper.java @@ -2,6 +2,8 @@ package com.example.guoyan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.guoyan.entity.Requeststatus; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface RequeststatusMapper extends BaseMapper { } diff --git a/src/main/java/com/example/guoyan/mapper/ScKpsqspMapper.java b/src/main/java/com/example/guoyan/mapper/ScKpsqspMapper.java index 9e9770f..69f804e 100644 --- a/src/main/java/com/example/guoyan/mapper/ScKpsqspMapper.java +++ b/src/main/java/com/example/guoyan/mapper/ScKpsqspMapper.java @@ -1,4 +1,7 @@ package com.example.guoyan.mapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper public interface ScKpsqspMapper { } diff --git a/src/main/java/com/example/guoyan/mapper/ScXglcMapper.java b/src/main/java/com/example/guoyan/mapper/ScXglcMapper.java index 07529c3..80204aa 100644 --- a/src/main/java/com/example/guoyan/mapper/ScXglcMapper.java +++ b/src/main/java/com/example/guoyan/mapper/ScXglcMapper.java @@ -2,6 +2,8 @@ package com.example.guoyan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.guoyan.entity.ScXglc; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface ScXglcMapper extends BaseMapper { } diff --git a/src/main/java/com/example/guoyan/mapper/SendHtMapper.java b/src/main/java/com/example/guoyan/mapper/SendHtMapper.java new file mode 100644 index 0000000..398cb46 --- /dev/null +++ b/src/main/java/com/example/guoyan/mapper/SendHtMapper.java @@ -0,0 +1,12 @@ +package com.example.guoyan.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.guoyan.entity.SendHt; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface SendHtMapper extends BaseMapper { + List querySendHtByNoDel(); +} diff --git a/src/main/java/com/example/guoyan/mapper/SendKpxxMapper.java b/src/main/java/com/example/guoyan/mapper/SendKpxxMapper.java new file mode 100644 index 0000000..45c4830 --- /dev/null +++ b/src/main/java/com/example/guoyan/mapper/SendKpxxMapper.java @@ -0,0 +1,17 @@ +package com.example.guoyan.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.guoyan.entity.SendKpxx; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface SendKpxxMapper extends BaseMapper { + + List querySendKpxxByNoDel(); + List querySendToYPT(); + + String selectProcessId(@Param("id") String id); +} diff --git a/src/main/java/com/example/guoyan/mapper/SendXmMapper.java b/src/main/java/com/example/guoyan/mapper/SendXmMapper.java new file mode 100644 index 0000000..170cf07 --- /dev/null +++ b/src/main/java/com/example/guoyan/mapper/SendXmMapper.java @@ -0,0 +1,19 @@ +package com.example.guoyan.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.guoyan.entity.SendXm; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface SendXmMapper extends BaseMapper { + /** + * 查询新增或修改的信息,这些信息未被发送到北京 + * @return 项目信息 + */ + List querySendXmByNoDel(); + List querySendXmByProjectId(@Param("projectId") String id); + +} diff --git a/src/main/java/com/example/guoyan/mapper/WfrequestMapper.java b/src/main/java/com/example/guoyan/mapper/WfrequestMapper.java index 804ba07..8f28339 100644 --- a/src/main/java/com/example/guoyan/mapper/WfrequestMapper.java +++ b/src/main/java/com/example/guoyan/mapper/WfrequestMapper.java @@ -2,6 +2,8 @@ package com.example.guoyan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.guoyan.entity.Wfrequest; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface WfrequestMapper extends BaseMapper { } diff --git a/src/main/java/com/example/guoyan/scheduled/ProcessScheduled.java b/src/main/java/com/example/guoyan/scheduled/ProcessScheduled.java index f94e5a0..0fba40c 100644 --- a/src/main/java/com/example/guoyan/scheduled/ProcessScheduled.java +++ b/src/main/java/com/example/guoyan/scheduled/ProcessScheduled.java @@ -1,19 +1,632 @@ package com.example.guoyan.scheduled; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.example.guoyan.entity.*; +import com.example.guoyan.mapper.*; +import com.example.guoyan.response.ResponseBeanForBeiJing; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.FileSystemResource; +import org.springframework.http.*; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; -import java.util.Date; +import javax.annotation.Resource; +import java.io.File; +import java.time.Duration; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; @Component @Slf4j public class ProcessScheduled { - @Scheduled(cron = "0 0/5 * * * ?") - public void invoice_request_Process_Scheduled(){ - //先查询开票申请的流程 + @Autowired + private SendXmMapper sendXmMapper; + @Resource + private RestTemplate restTemplate; + @Autowired + private OtherMapper otherMapper; + @Autowired + private SendHtMapper sendHtMapper; + @Autowired + private SendKpxxMapper sendKpxxMapper; + @Autowired + private ReadlogMapper readlogMapper; + @Autowired + private RequestlogMapper requestlogMapper; + @Autowired + private RequestoperatorMapper requestoperatorMapper; + @Autowired + private WfrequestMapper wfrequestMapper; + @Autowired + private RequeststatusMapper requeststatusMapper; + @Autowired + private ScXglcMapper scXglcMapper; + @Autowired + private PermissionrulegroupMapper permissionrulegroupMapper; + @Value("${ypt.username}") + private String username; + @Value("${ypt.password}") + private String password; + @Value("${ypt.loginUrl}") + private String loginUrl; + @Value("${ypt.projectUrl}") + private String projectUrl; + @Value("${ypt.contractUrl}") + private String contractUrl; + @Value("${ypt.invoiceUrl}") + private String invoiceUrl; + @Value("${ypt.confirmUrl}") + private String confirmUrl; + @Value("${ypt.fileDownPre}") + private String fileDownPre; + @Value("${ypt.uploadFileUrl}") + private String uploadFileUrl; + @Value("${ypt.incomeUrl}") + private String incomeUrl; + @Value("${ypt.InvoicingApprovalStatusUrl}") + private String InvoicingApprovalStatusUrl; + @Autowired + private KpssProcessNode6IdInfo kpssProcessNode6IdInfo; + /** + * 定时任务跑合同和项目信息的变化发给北京,五分钟一次 + */ + //@Scheduled(cron = "0 0/5 * * * ?") - log.info(new Date ().toString()); + public void invoice_request_Process_Scheduled() { + //提交参数设置 + log.info("我开始跑任务啦"); + HashMap map = new HashMap<>(); + map.put("username", username); + map.put("password", password); + //查询需要更新到北京云平台的数据 + List sendXmList = sendXmMapper.querySendXmByNoDel(); + List sendHtList = sendHtMapper.querySendHtByNoDel(); + //发起请求 获取权限token + log.info(map.toString()); + ResponseBeanForBeiJing responseBean = restTemplate.postForObject(loginUrl, map, ResponseBeanForBeiJing.class); + log.info("登录返回的信息:"+responseBean.toString()); + if("200".equals(responseBean.getCode())){ + String data = responseBean.getData().toString(); + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", data); + sendXmToYunPingtai(sendXmList, headers); + sendHtToYunPingtai(sendHtList,headers); + //处理开票信息 + List sendKpxxList = sendKpxxMapper.querySendKpxxByNoDel(); + sendKpxxList.forEach(item->{ + Integer interfaceType = item.getInterfaceType();//类型字段 + if(interfaceType==0){//开票信息有关的 + //判断是否过了节点5,通过流程id,节点 + String requestid = item.getRequestid(); + String kpssProcessNode5=kpssProcessNode6IdInfo.getPerStepid(); + List> selectProcessNo5IsSubmit = otherMapper.selectProcessNo5IsSubmit(requestid, kpssProcessNode5); + if (selectProcessNo5IsSubmit.size()>0){//存在 + senKpxxToYunPingtai(item,headers); + } + //开票确认 + }else if (interfaceType==1){ + sendKpqrToYunPingtai(item,headers); + //开票确认收入 + }else if(interfaceType==2){ + sendKpqrsrToYunPingtai(item,headers); + //开票确认到账 + }else if (interfaceType==3){ + sendKpqrdzToYunPingtai(item,headers); + }else { + log.info("未知编号:"+interfaceType); + } + }); + //处理云平台开票信息更新流程 + queryInvoicingApprovalStatus(headers); + // + + }else { + log.info("登录失败!"); + } + log.info("本次任务结束了"); + + } + @Transactional() + public void sendXmToYunPingtai(List sendXmList, HttpHeaders headers) { + //把查到的数据按次序更新或新增到北京 + sendXmList.forEach(iteam -> { + //0表示新增,要传到北京 + if (iteam.getOperatetype() == 0) { + iteam.setProjectNo(null); + //传到北京的接口 + // 组装请求体 + HttpEntity request = new HttpEntity<>(iteam, headers); + ResponseBeanForBeiJing responseData = restTemplate.postForObject(projectUrl, request, ResponseBeanForBeiJing.class); + if ("200".equals(responseData.getCode())) { + Map dataMap = (Map) responseData.getData(); + String projectNo = dataMap.get("projectNo").toString(); + HashMap paramMap = new HashMap<>(); + paramMap.put("yptbh", projectNo); + paramMap.put("id", iteam.getProjectId()); + otherMapper.updateScXMkp1_yptbh_ByPjid(paramMap);//把返回的项目编号存入Sc_Xmkp1 + LambdaUpdateWrapper sendXmLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + sendXmLambdaUpdateWrapper.eq(SendXm::getId, iteam.getId());//更新条件 + sendXmLambdaUpdateWrapper.set(SendXm::getStatus, 1);//更新的值 + sendXmMapper.update(null, sendXmLambdaUpdateWrapper); + log.info("新增到北京成功"); + log.info(responseData.toString()); + } else { + log.info("新增失败,projectId是" + iteam.getProjectId() + " id是" + iteam.getId()); + log.info("返回的信息是" + responseData.toString()); + } + } + //修改 + if (iteam.getOperatetype() == 1) { + // 组装请求体 + HashMap getdata = otherMapper.selectScXMkp1_yptbh_ByPjid(iteam.getProjectId()); + String yptbh = getdata.get("yptbh").toString();//云平台编号 + iteam.setProjectNo(yptbh); + HttpEntity request = new HttpEntity<>(iteam, headers); + ResponseBeanForBeiJing responseData = restTemplate.postForObject(projectUrl, request, ResponseBeanForBeiJing.class); + if ("200".equals(responseData.getCode())) { + Map dataMap = (Map) responseData.getData(); + String projectNo = dataMap.get("projectNo").toString(); + LambdaUpdateWrapper sendXmLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + sendXmLambdaUpdateWrapper.eq(SendXm::getId, iteam.getId());//更新条件 + sendXmLambdaUpdateWrapper.set(SendXm::getStatus, 1);//更新的值 + sendXmMapper.update(null, sendXmLambdaUpdateWrapper); + log.info("更新到北京成功"); + log.info(responseData.toString()); + } else { + log.info("更新失败,projectId是" + iteam.getProjectId() + " id是" + iteam.getId()); + log.info("返回的信息是" + responseData.toString()); + } + } + }); + } + @Transactional() + public void sendHtToYunPingtai(List sendHtList, HttpHeaders headers) { + sendHtList.forEach(item -> { + //用项目id 查询项目金额 + String xmAmount = otherMapper.selectXmAmount(item.getProjectId()); + Double contractAmount = item.getContractAmount(); + Double amt = Double.valueOf(xmAmount); + log.info("金额是"+xmAmount,amt); + //如果合同金额和项目金额不一样,更新云平台的项目金额 为合同金额 + if (amt!=contractAmount){ + //更新数据需要所有字段都有值,所以去查最新的一笔更新记录,改一下合同金额 + List sendXms = sendXmMapper.querySendXmByProjectId(item.getProjectId()); + SendXm sendXm = sendXms.get(0);//得到最新的一条已修改记录 + sendXm.setContractAmount(contractAmount);//修改金额 + sendXm.setProjectNo(item.getProjectNo());//修改项目编号 + HttpEntity request = new HttpEntity<>(sendXm, headers); + ResponseBeanForBeiJing responseData = restTemplate.postForObject(projectUrl, request, ResponseBeanForBeiJing.class); + if ("200".equals(responseData.getCode())) { + log.info("更新项目金额到云平台成功"); + log.info(responseData.toString()); + } else { + log.info("更新项目金额失败,projectId是" + sendXm.getProjectId() + " id是" + sendXm.getId()); + log.info("返回的信息是" + responseData.toString()); + } + } + //0表示新增,要传到北京 + if ("0".equals(item.getOperatetype())) { + item.setContractCode(null); + //传到云平台的接口 + // 组装请求体 + HttpEntity request = new HttpEntity<>(item, headers); + log.info(item.toString()); + ResponseBeanForBeiJing responseData = restTemplate.postForObject(contractUrl, request, ResponseBeanForBeiJing.class); + if ("200".equals(responseData.getCode())) { + Map dataMap = (Map) responseData.getData(); + String contractCode = dataMap.get("contractCode").toString(); + HashMap paramMap = new HashMap<>(); + paramMap.put("yptbh", contractCode); + paramMap.put("id", item.getContractId()); + otherMapper.updateScHTLC_yptbh_ByPjid(paramMap);//把返回的项目编号存入Sc_Xmkp1 + LambdaUpdateWrapper sendHtLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + sendHtLambdaUpdateWrapper.eq(SendHt::getId, item.getId());//更新条件 + sendHtLambdaUpdateWrapper.set(SendHt::getStatus, 1);//更新的值 + sendHtMapper.update(null, sendHtLambdaUpdateWrapper); + log.info("新增到北京成功"); + log.info(responseData.toString()); + } else { + log.info("新增失败,projectId是" + item.getContractId() + " id是" + item.getId()); + log.info("返回的信息是" + responseData.toString()); + } + } + //修改 + if ("1".equals(item.getOperatetype())) { + // 组装请求体 + HashMap getdata = otherMapper.selectScHTLC_yptbh_ByPjid(item.getContractId()); + String yptbh = getdata.get("yptbh").toString();//云平台编号 + item.setContractCode(yptbh); + HttpEntity request = new HttpEntity<>(item, headers); + log.info(item.toString()); + ResponseBeanForBeiJing responseData = restTemplate.postForObject(contractUrl,request, ResponseBeanForBeiJing.class); + if ("200".equals(responseData.getCode())) { + Map dataMap = (Map) responseData.getData(); + LambdaUpdateWrapper sendHtLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + sendHtLambdaUpdateWrapper.eq(SendHt::getId, item.getId());//更新条件 + sendHtLambdaUpdateWrapper.set(SendHt::getStatus, 1);//更新的值 + sendHtMapper.update(null, sendHtLambdaUpdateWrapper); + log.info("更新到北京成功"); + log.info(responseData.toString()); + } else { + log.info("更新失败,projectId是" + item.getContractId() + " id是" + item.getId()); + log.info("返回的信息是" + responseData.toString()); + } + } + }); + } + @Transactional() + public void senKpxxToYunPingtai(SendKpxx sendKpxx, HttpHeaders headers){ + //新增 + 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); + 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()); + } + } + //修改 暂无修改 + if (sendKpxx.getOperatetype()==1){ + + } + } + @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); + ResponseBeanForBeiJing beanForBeiJing = exchange.getBody(); + if (!"200".equals(beanForBeiJing.getCode())){ + log.info("返回信息错误!"+beanForBeiJing.toString()); + return; + } + Map dataMap = (Map) beanForBeiJing.getData(); + Integer status = (Integer) dataMap.get("status"); + if (status!=4){ + log.info("开票申请未通过,不能进行开票确认"); + return; + } + //新增 + 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); + if ("200".equals(responseData.getCode())) { + 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.info("返回的信息是" + responseData.toString()); + } + } + //修改 + if (sendKpxx.getOperatetype()==1){ + + } + } + @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()); + return; + } + Map dataMap = (Map) responseData.getData(); + Integer status = (Integer) dataMap.get("status"); + if (status!=4){ + log.info("开票申请未通过,不能进行开票确认"); + return; + } + //新增 + 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); + if ("200".equals(responseData.getCode())) { + dataMap = (Map) responseData.getData(); + String incomeId = dataMap.get("incomeId").toString(); + HashMap paramMap = new HashMap<>(); + paramMap.put("incomeId", incomeId); + paramMap.put("lcid", sendKpxx.getWfrequest()); + otherMapper.updateScKpcwqrsr_incomeId_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.info("返回的信息是" + responseData.toString()); + } + } + //修改 + if (sendKpxx.getOperatetype()==1){ + invoiceNo = otherMapper.selectScKpsqsp_yptbh_ByPjid(sendKpxx.getRequestid()).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); + //删除成功后在新增 + if ("200".equals(responseData.getCode())){ + sendKpxx.setOpFlag(0); + sendKpxx.setIncomeId(null); + HttpEntity request1 = new HttpEntity<>(sendKpxx, headers); + responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class); + if("200".equals(responseData.getCode())){ + dataMap = (Map) responseData.getData(); + incomeId = dataMap.get("incomeId").toString(); + HashMap paramMap = new HashMap<>(); + paramMap.put("incomeId", incomeId); + paramMap.put("lcid", sendKpxx.getWfrequest()); + otherMapper.updateScKpcwqrsr_incomeId_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()); + } + } + + } + } + @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()); + return; + } + Map dataMap = (Map) responseData.getData(); + Integer status = (Integer) dataMap.get("status"); + if (status!=4){ + 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); + if ("200".equals(responseData.getCode())) { + dataMap = (Map) responseData.getData(); + String incomeId = dataMap.get("accountId").toString(); + HashMap paramMap = new HashMap<>(); + paramMap.put("accountId", incomeId); + paramMap.put("id", sendKpxx.getRequestid()); + otherMapper.updateScKpsqsp_accountId_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.info("返回的信息是" + responseData.toString()); + } + } + //修改 + 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); + //删除成功后在新增 + if ("200".equals(responseData.getCode())){ + sendKpxx.setOpFlag(0); + sendKpxx.setAccountId(null); + HttpEntity request1 = new HttpEntity<>(sendKpxx, headers); + responseData = restTemplate.postForObject(incomeUrl,request, ResponseBeanForBeiJing.class); + if("200".equals(responseData.getCode())){ + dataMap = (Map) responseData.getData(); + accountId = dataMap.get("accountId").toString(); + HashMap paramMap = new HashMap<>(); + paramMap.put("accountId", accountId); + paramMap.put("id", sendKpxx.getWfrequest()); + otherMapper.updateScKpsqsp_accountId_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()); + } + } + + } + } + @Transactional() + public void queryInvoicingApprovalStatus(HttpHeaders headers){ + 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()); + return; + } + Map dataMap = (Map) responseData.getData(); + Integer status = (Integer) dataMap.get("status"); + if (status==4){ + //已确认 + //更新这边的流程 + String processId = sendKpxxMapper.selectProcessId(item.getRequestid()); + Requestlog requestlog = new Requestlog(); + 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)); + requestlog.setStepid(kpssProcessNode6IdInfo.getCurrentStepid()); + requestlog.setNtype(1); + requestlog.setInfo("北京同意"); + requestlog.setIstodo(1); + requestlog.setNextstepid(kpssProcessNode6IdInfo.getNextStepid()); + requestlogMapper.insert(requestlog); + log.info("requestlog新增成功:"+requestlog.toString()); + Permissionrulegroup permissionrulegroup = new Permissionrulegroup(); + permissionrulegroup.setTypeid(kpssProcessNode6IdInfo.getNextTypeid()); + permissionrulegroup.setRestype("4028818327ba2e450127ba2e5b000012"); + permissionrulegroup.setResid(processId); + permissionrulegroup.setOperate(197); + permissionrulegroup.setOptquery(1); + permissionrulegroup.setOptcreate(0); + permissionrulegroup.setOptupdate(4); + permissionrulegroup.setOptdelete(0); + permissionrulegroup.setOptmanage(0); + permissionrulegroup.setPageid("2c9adae4797fd663017982c00bf301e3"); + permissionrulegroup.setStmp("2c9adae478fdbe15017906f93ec90266"); + permissionrulegroup.setDsporder(0); + permissionrulegroup.setLayoutedit("2c9a59b681805f1301818a7047300091"); + permissionrulegroup.setAdddate(LocalDate.now().format(dateTimeFormatter)); + permissionrulegroup.setAllowstaffids(kpssProcessNode6IdInfo.getNextAllowStaffids()); + permissionrulegroup.setMatrixtype(0); + permissionrulegroupMapper.insert(permissionrulegroup); + log.info("permissionrulegroup新增成功:"+permissionrulegroup.toString()); + Readlog readlog = new Readlog(); + readlog.setDataid(processId); + readlog.setStepid(kpssProcessNode6IdInfo.getCurrentStepid()); + readlog.setStaffid(kpssProcessNode6IdInfo.getCurrentStaffid()); + readlog.setReadnum("1"); + readlog.setResid("2c9adae478fdbe15017906f73e8a0261"); + readlog.setLastaccessdate(LocalDate.now().format(dateTimeFormatter)); + readlog.setAdddate(LocalDate.now().format(dateTimeFormatter)); + readlogMapper.insert(readlog); + log.info("readlog1111新增成功:"+readlog.toString()); + 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)); + readlogMapper.insert(readlog); + log.info("readlog22222新增成功:"+readlog.toString()); + Requestoperator requestoperator = new Requestoperator(); + //流程号查询id + LambdaQueryWrapper requestoperatorLambdaQueryWrapper = new LambdaQueryWrapper<>(); + requestoperatorLambdaQueryWrapper.eq(Requestoperator::getIssubmit,0); + requestoperatorLambdaQueryWrapper.eq(Requestoperator::getRequestid,processId); + String requestoperatorId = requestoperatorMapper.selectList(requestoperatorLambdaQueryWrapper).get(0).getId(); + + LambdaUpdateWrapper requestoperatorLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + requestoperatorLambdaUpdateWrapper.set(Requestoperator::getIssubmit,1); + requestoperatorLambdaUpdateWrapper.set(Requestoperator::getSubmitdate,LocalDate.now().format(dateTimeFormatter)); + requestoperatorLambdaUpdateWrapper.eq(Requestoperator::getId,requestoperatorId); + requestoperatorMapper.update(null,requestoperatorLambdaUpdateWrapper); + log.info("requestoperatorLambdaUpdateWrapper成功:"+requestoperatorLambdaUpdateWrapper.toString()); + + requestoperator.setRequestid(processId); + requestoperator.setStepid(kpssProcessNode6IdInfo.getNextStepid()); + requestoperator.setStepoperid(kpssProcessNode6IdInfo.getNextStepOperid()); + requestoperator.setStaffid(kpssProcessNode6IdInfo.getNextAllowStaffids()); + requestoperator.setIssubmit(0); + requestoperator.setReceivedate(LocalDate.now().format(dateTimeFormatter)); + requestoperator.setOpertype(1); + requestoperator.setIsremind(0); + requestoperator.setIsorioperator(0); + requestoperator.setDsporder(1); + requestoperatorMapper.insert(requestoperator); + log.info("requestoperator新增成功:"+requestoperator.toString()); + + LambdaUpdateWrapper wfrequestLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + wfrequestLambdaUpdateWrapper.set(Wfrequest::getLastmodifydate,LocalDate.now().format(dateTimeFormatter)); + wfrequestLambdaUpdateWrapper.set(Wfrequest::getLaststaffid,kpssProcessNode6IdInfo.getCurrentStaffid()); + wfrequestLambdaUpdateWrapper.eq(Wfrequest::getId,processId); + wfrequestMapper.update(null,wfrequestLambdaUpdateWrapper); + log.info("wfrequestLambdaUpdateWrapper修改成功:"+wfrequestLambdaUpdateWrapper.toString()); + + 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.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::getZhtjr,kpssProcessNode6IdInfo.getCurrentStaffid()); + scXglcLambdaUpdateWrapper.set(ScXglc::getDqjd,kpssProcessNode6IdInfo.getNextStepid()); + scXglcLambdaUpdateWrapper.eq(ScXglc::getLc,processId); + scXglcMapper.update(null,scXglcLambdaUpdateWrapper); + log.info("scXglcLambdaUpdateWrapper修改成功:"+scXglcLambdaUpdateWrapper.toString()); + log.info("流程数据更新成功,流程到财务开票"); + } + + }); } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 77ee752..b50b063 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -6,4 +6,33 @@ spring: #serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true url: jdbc:mysql://116.62.210.190:3306/guoyantest?autoReconnect=true&useUnicode=true&characterEncoding=UTF8&mysqlEncoding=utf8&zeroDateTimeBehavior=convertToNull username: test - password: Jyy83086775 \ No newline at end of file + password: Jyy83086775 +mybatis-plus: + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +logging: + # 配置日志文件存储位置 + file: + path: F:\log +ypt: + username: '0519999' + password: '123456' + loginUrl: http://123.57.82.48:13310/api/auth/login + projectUrl: http://123.57.82.48:13310/api/nb/project + contractUrl: http://123.57.82.48:13310/api/nb/contract + invoiceUrl: http://123.57.82.48:13310/api/nb/invoice + 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 + InvoicingApprovalStatusUrl: http://123.57.82.48:13310/api/nb/invoice/status + fileDownPre: '/opt/eresource_test/attachFiles/' +kpssProcessNode6IdInfo: + perStepid: "2c9adae478fdbe15017906f93ec90265" + currentStepid: "2c9a59b68b9fd59d018c3d22c9b54f9c" + currentStaffid: "2c9a59b68aab39d5018aac42f5be04cb" + nextStepid: "2c9adae478fdbe15017906f93ec90266" + nextTypeid: "2c9adae4797fd663017982bd72f801dc" + nextAllowStaffids: "2c908da5803abfa4018064f817070161" + nextStepOperid: "2c9adae4797fd663017982c00bf301e3" + + diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 0b3e7e7..f901ef6 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -6,4 +6,28 @@ spring: #serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true url: jdbc:mysql://116.62.210.190:3306/guoyan?autoReconnect=true&useUnicode=true&characterEncoding=UTF8&mysqlEncoding=utf8&zeroDateTimeBehavior=convertToNull username: root - password: Guoyan83086775 \ No newline at end of file + password: Guoyan83086775 +logging: + # 配置日志文件存储位置 + file: + path: F:\log +ypt: + username: '0519999' + password: '123456' + loginUrl: http://123.57.82.48:13310/api/auth/login + projectUrl: http://123.57.82.48:13310/api/nb/project + contractUrl: http://123.57.82.48:13310/api/nb/contract + invoiceUrl: http://123.57.82.48:13310/api/nb/invoice + 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 + InvoicingApprovalStatusUrl: http://123.57.82.48:13310/api/nb/invoice/status/{invoiceNo} + fileDownPre: '/opt/eresource/attachFiles/' +kpssProcessNode6IdInfo: + perStepid: "2c9adae478fdbe15017906f93ec90265" + currentStepid: "2c9a59b68b9fd59d018c3d22c9b54f9c" + currentStaffid: "2c9a59b68aab39d5018aac42f5be04cb" + nextStepid: "2c9adae478fdbe15017906f93ec90266" + nextTypeid: "2c9adae4797fd663017982bd72f801dc" + nextAllowStaffids: "2c908da5803abfa4018064f817070161" + nextStepOperid: "2c9adae4797fd663017982c00bf301e3" \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c46436a..15b544e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -14,15 +14,10 @@ mybatis-plus: configuration: #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,开启按照驼峰命名法映射 map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: id-type: ASSIGN_UUID -logging: - # 配置日志文件存储位置 - file: - path: F:\log http: maxTotal: 100 #最大连接数 defaultMaxPerRoute: 20 #并发数 @@ -30,4 +25,4 @@ http: connectionRequestTimeout: 500 #从连接池中获取到连接的最长时间 socketTimeout: 10000 #数据传输的最长时间 staleConnectionCheckEnabled: true #提交请求前测试连接是否可用 - validateAfterInactivity: 3000000 #可用空闲连接过期时间,重用空闲连接时会先检查是否空闲时间超过这个时间,如果超过,释放socket重新建立 \ No newline at end of file + validateAfterInactivity: 3000000 #可用空闲连接过期时间,重用空闲连接时会先检查是否空闲时间超过这个时间,如果超过,释放socket重新建立 diff --git a/src/main/resources/mapper/OtherMapper.xml b/src/main/resources/mapper/OtherMapper.xml new file mode 100644 index 0000000..0985f1c --- /dev/null +++ b/src/main/resources/mapper/OtherMapper.xml @@ -0,0 +1,48 @@ + + + + + update sc_xmkp1 set yptbh = #{yptbh} where id = #{id} + + + + update sc_htlc set yptbh = #{yptbh} where id = #{id} + + + + + + + update sc_kpsqsp set yptbh = #{yptbh} where id = #{id} + + + + + update sc_kpcwqrsr set incomeId = #{incomeId} where lcid = #{lcid} + + + + update sc_kpsqsp set accountId = #{accountId} where id = #{id} + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/SendHtMapper.xml b/src/main/resources/mapper/SendHtMapper.xml new file mode 100644 index 0000000..c381492 --- /dev/null +++ b/src/main/resources/mapper/SendHtMapper.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mapper/SendKpxxMapper.xml b/src/main/resources/mapper/SendKpxxMapper.xml new file mode 100644 index 0000000..913a121 --- /dev/null +++ b/src/main/resources/mapper/SendKpxxMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mapper/SendXmMapper.xml b/src/main/resources/mapper/SendXmMapper.xml new file mode 100644 index 0000000..a8d507a --- /dev/null +++ b/src/main/resources/mapper/SendXmMapper.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +