请购单
This commit is contained in:
parent
5fa3cf64aa
commit
91a768bae5
|
@ -45,9 +45,9 @@
|
||||||
</properties>
|
</properties>
|
||||||
</profile>
|
</profile>
|
||||||
<profile>
|
<profile>
|
||||||
<id>zqtlocal</id> <!--曾庆拓-->
|
<id>jianhui</id><!-- 建辉环境打包用这个-->
|
||||||
<properties>
|
<properties>
|
||||||
<profile.active>zqtlocal</profile.active>
|
<profile.active>jianhui</profile.active>
|
||||||
</properties>
|
</properties>
|
||||||
</profile>
|
</profile>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package com.hzya.frame.plugin.oa.praybill.service.impl;
|
package com.hzya.frame.plugin.oa.praybill.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
|
@ -8,17 +10,24 @@ import com.alibaba.fastjson.JSONObject;
|
||||||
import com.hzya.frame.plugin.oa.praybill.entity.RequisitionOrderEntity;
|
import com.hzya.frame.plugin.oa.praybill.entity.RequisitionOrderEntity;
|
||||||
import com.hzya.frame.plugin.oa.praybill.service.IRequisitionOrderPluginService;
|
import com.hzya.frame.plugin.oa.praybill.service.IRequisitionOrderPluginService;
|
||||||
import com.hzya.frame.plugin.oa.praybill.service.IRequisitionOrderService;
|
import com.hzya.frame.plugin.oa.praybill.service.IRequisitionOrderService;
|
||||||
|
import com.hzya.frame.seeyon.entity.CollAttachmentResDTO;
|
||||||
import com.hzya.frame.seeyon.enums.ColEventTypeEnum;
|
import com.hzya.frame.seeyon.enums.ColEventTypeEnum;
|
||||||
|
import com.hzya.frame.seeyon.util.OARestUtil;
|
||||||
import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity;
|
import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity;
|
||||||
import com.hzya.frame.sysnew.integtationTaskLivingDetails.service.IIntegrationTaskLivingDetailsService;
|
import com.hzya.frame.sysnew.integtationTaskLivingDetails.service.IIntegrationTaskLivingDetailsService;
|
||||||
import com.hzya.frame.uuid.UUIDUtils;
|
import com.hzya.frame.uuid.UUIDUtils;
|
||||||
import com.hzya.frame.web.entity.BaseResult;
|
import com.hzya.frame.web.entity.BaseResult;
|
||||||
import com.hzya.frame.web.entity.JsonResultEntity;
|
import com.hzya.frame.web.entity.JsonResultEntity;
|
||||||
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.net.URLDecoder;
|
||||||
|
import java.util.Base64;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -35,6 +44,8 @@ public class RequisitionOrderPluginServiceImpl implements IRequisitionOrderPlugi
|
||||||
private IIntegrationTaskLivingDetailsService taskLivingDetailsService;
|
private IIntegrationTaskLivingDetailsService taskLivingDetailsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IRequisitionOrderService requisitionOrderService;
|
private IRequisitionOrderService requisitionOrderService;
|
||||||
|
@Autowired
|
||||||
|
private OARestUtil oaRestUtil;
|
||||||
Logger logger = LoggerFactory.getLogger(IRequisitionOrderPluginService.class);
|
Logger logger = LoggerFactory.getLogger(IRequisitionOrderPluginService.class);
|
||||||
/**
|
/**
|
||||||
* 请购单同步到ncc
|
* 请购单同步到ncc
|
||||||
|
@ -48,20 +59,128 @@ public class RequisitionOrderPluginServiceImpl implements IRequisitionOrderPlugi
|
||||||
String datasourceCode = requestJson.getString("sourceCode");
|
String datasourceCode = requestJson.getString("sourceCode");
|
||||||
String task_living_details_id = requestJson.getString("integration_task_living_details_id");
|
String task_living_details_id = requestJson.getString("integration_task_living_details_id");
|
||||||
String headersStr = requestJson.getString("headers");//请求头
|
String headersStr = requestJson.getString("headers");//请求头
|
||||||
//String formAppId = requestJson.getString("formApp");
|
|
||||||
String eventType = requestJson.getString("eventType");
|
String eventType = requestJson.getString("eventType");
|
||||||
|
String summaryId = requestJson.getString("summaryId");
|
||||||
JSONObject headers = requestJson.getJSONObject("headers");
|
JSONObject headers = requestJson.getJSONObject("headers");
|
||||||
// Assert.notEmpty(formAppId,"formAppId不能为空");
|
|
||||||
Assert.notEmpty(eventType,"eventType不能为空");
|
Assert.notEmpty(eventType,"eventType不能为空");
|
||||||
Assert.notEmpty(headersStr,"headers不能为空");
|
Assert.notEmpty(headersStr,"headers不能为空");
|
||||||
String formmainTableName = headers.getString("formmainTableName");
|
String formmainTableName = headers.getString("formmainTableName");
|
||||||
String forsonTableName = headers.getString("forsonTableName");
|
String forsonTableName = headers.getString("forsonTableName");
|
||||||
|
String fileApiCode = headers.getString("fileApiCode");
|
||||||
JSONObject jsonStrObj = requestJson.getJSONObject("jsonStr");
|
JSONObject jsonStrObj = requestJson.getJSONObject("jsonStr");
|
||||||
JSONObject businessData = jsonStrObj.getJSONObject("businessDataStr");
|
JSONObject businessData = jsonStrObj.getJSONObject("businessDataStr");
|
||||||
JSONObject formmainData = businessData.getJSONObject(formmainTableName);
|
JSONObject formmainData = businessData.getJSONObject(formmainTableName);
|
||||||
JSONArray forsonData = businessData.getJSONArray(forsonTableName);
|
JSONArray forsonData = businessData.getJSONArray(forsonTableName);
|
||||||
//流程结束
|
//流程结束
|
||||||
if (ColEventTypeEnum.ONPROCESSFINISHED.getType().equals(eventType)){
|
if (ColEventTypeEnum.ONPROCESSFINISHED.getType().equals(eventType)){
|
||||||
|
//组装请购单报文
|
||||||
|
JSONArray reqParams = praybillVaueOf(headers, formmainData, forsonData);
|
||||||
|
String req = JSONObject.toJSONString(reqParams);
|
||||||
|
logger.info("======OA请购单传NCC请求参数:{}======",req);
|
||||||
|
String result = HttpRequest.post(baseUrl)
|
||||||
|
.header("appId", "800065")//NCC请购单接口
|
||||||
|
.header("apiCode", "8000650000")//NCC应用
|
||||||
|
.header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥
|
||||||
|
.header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥
|
||||||
|
.body(req)//表单内容
|
||||||
|
.timeout(30000)//超时,毫秒
|
||||||
|
.execute().body();
|
||||||
|
logger.info("======OA请购单传NCC响应参数:{}======",result);
|
||||||
|
if (StrUtil.isNotEmpty(result)){
|
||||||
|
JSONObject resultJson = JSONObject.parseObject(result);
|
||||||
|
Boolean flag = resultJson.getBoolean("flag");
|
||||||
|
//保存日志
|
||||||
|
IntegrationTaskLivingDetailsEntity taskLivingDetail = new IntegrationTaskLivingDetailsEntity();
|
||||||
|
Date now = new Date();
|
||||||
|
taskLivingDetail.setCreate_time(now);
|
||||||
|
taskLivingDetail.setModify_time(now);
|
||||||
|
taskLivingDetail.setRootAppPk(formmainData.getString("id"));
|
||||||
|
taskLivingDetail.setRootAppBill(formmainData.getString("field0001"));
|
||||||
|
taskLivingDetail.setPluginId("RequisitionOrderPlugin");
|
||||||
|
taskLivingDetail.setRootAppNewData(req);
|
||||||
|
taskLivingDetail.setNewTransmitInfo(result);
|
||||||
|
taskLivingDetail.setNewPushDate(now);
|
||||||
|
saveLog(task_living_details_id,flag,taskLivingDetail);
|
||||||
|
//回写NCC单号到OA单据
|
||||||
|
JSONObject attribute = resultJson.getJSONObject("attribute");
|
||||||
|
if (null != attribute){
|
||||||
|
String code = attribute.getString("code");
|
||||||
|
if ("success".equals(code)){
|
||||||
|
JSONObject data = attribute.getJSONObject("data");
|
||||||
|
if (null != data){
|
||||||
|
JSONObject headVO = data.getJSONObject("headVO");
|
||||||
|
if (null != headVO){
|
||||||
|
String vbillcode = headVO.getString("code");
|
||||||
|
String pk_bill = headVO.getString("id");
|
||||||
|
logger.info("======vbillcode======:{}",vbillcode);
|
||||||
|
RequisitionOrderEntity requisitionOrderEntity = new RequisitionOrderEntity();
|
||||||
|
requisitionOrderEntity.setField0059(vbillcode);
|
||||||
|
requisitionOrderEntity.setDataSourceCode(datasourceCode);
|
||||||
|
requisitionOrderEntity.setId(formmainData.getString("id"));
|
||||||
|
requisitionOrderService.updateOrder(requisitionOrderEntity);
|
||||||
|
//下载OA附件上传到NCC
|
||||||
|
try {
|
||||||
|
uploadFile(summaryId, headers, fileApiCode, pk_bill);
|
||||||
|
}catch (Exception e){
|
||||||
|
logger.error("下载OA附件上传到NCC出错:{}",e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return BaseResult.getSuccessMessageEntity("请购单推NCC成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载OA附件上传到NCC
|
||||||
|
* @param summaryId
|
||||||
|
* @param headers
|
||||||
|
* @param fileApiCode
|
||||||
|
* @param pk_bill
|
||||||
|
*/
|
||||||
|
public void uploadFile(String summaryId, JSONObject headers, String fileApiCode, String pk_bill) {
|
||||||
|
String token = oaRestUtil.getToken(null, fileApiCode);
|
||||||
|
List<CollAttachmentResDTO> collAttachmentList = oaRestUtil.getColAttachments(summaryId, "0", fileApiCode, token);
|
||||||
|
if (CollectionUtils.isNotEmpty(collAttachmentList)){
|
||||||
|
//获取OA token
|
||||||
|
for (CollAttachmentResDTO collAttachment : collAttachmentList) {
|
||||||
|
try {
|
||||||
|
String fileName = URLDecoder.decode(collAttachment.getFilename(), "UTF-8");
|
||||||
|
byte[] bytes = oaRestUtil.downloadFileBytes("hzya", fileApiCode, collAttachment.getFileUrl(), fileName, token);
|
||||||
|
String base64File = Base64.getEncoder().encodeToString(bytes);
|
||||||
|
JSONObject fileParams = new JSONObject();
|
||||||
|
fileParams.put("creator", headers.getString("creator"));
|
||||||
|
fileParams.put("pk_bill", pk_bill);
|
||||||
|
fileParams.put("filename",fileName);
|
||||||
|
fileParams.put("file",base64File);
|
||||||
|
String result = HttpRequest.post(baseUrl)
|
||||||
|
.header("appId", "800065")//NCC应用
|
||||||
|
.header("apiCode", "8000650001")//NCC附件上传接口
|
||||||
|
.header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥
|
||||||
|
.header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥
|
||||||
|
.body(fileParams.toString())//表单内容
|
||||||
|
.timeout(30000)//超时,毫秒
|
||||||
|
.execute().body();
|
||||||
|
logger.info("======OA请购单附件上传到NCC响应参数:{}======",result);
|
||||||
|
}catch(Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
logger.error("下载OA附件出错:{}",e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组装请购单报文
|
||||||
|
* @param headers 请求头
|
||||||
|
* @param formmainData 主表数据
|
||||||
|
* @param forsonData 子表数据
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
private static JSONArray praybillVaueOf(JSONObject headers, JSONObject formmainData, JSONArray forsonData) {
|
||||||
JSONObject paramObj = new JSONObject();
|
JSONObject paramObj = new JSONObject();
|
||||||
JSONObject praybill = new JSONObject();
|
JSONObject praybill = new JSONObject();
|
||||||
paramObj.put("head", praybill);
|
paramObj.put("head", praybill);
|
||||||
|
@ -85,7 +204,7 @@ public class RequisitionOrderPluginServiceImpl implements IRequisitionOrderPlugi
|
||||||
praybill.put("dmakedate", formmainData.getString("field0004"));//制单日期
|
praybill.put("dmakedate", formmainData.getString("field0004"));//制单日期
|
||||||
praybill.put("ctrantypeid", formmainData.getString("field0039"));//请购类型
|
praybill.put("ctrantypeid", formmainData.getString("field0039"));//请购类型
|
||||||
praybill.put("bislatest", true);//最新版本
|
praybill.put("bislatest", true);//最新版本
|
||||||
praybill.put("vdef1",formmainData.getString("field0002"));
|
praybill.put("vdef1", formmainData.getString("field0037"));
|
||||||
praybill.put("creator", headers.getString("creator"));//
|
praybill.put("creator", headers.getString("creator"));//
|
||||||
praybill.put("fpraysource", headers.getString("fpraysource"));//
|
praybill.put("fpraysource", headers.getString("fpraysource"));//
|
||||||
praybill.put("ccurrencyid", headers.getString("ccurrencyid"));//
|
praybill.put("ccurrencyid", headers.getString("ccurrencyid"));//
|
||||||
|
@ -127,55 +246,7 @@ public class RequisitionOrderPluginServiceImpl implements IRequisitionOrderPlugi
|
||||||
//调用NCC接口
|
//调用NCC接口
|
||||||
JSONArray reqParams = new JSONArray();
|
JSONArray reqParams = new JSONArray();
|
||||||
reqParams.add(paramObj);
|
reqParams.add(paramObj);
|
||||||
String req = JSONObject.toJSONString(reqParams);
|
return reqParams;
|
||||||
logger.info("======OA请购单传NCC请求参数:{}======",req);
|
|
||||||
String result = HttpRequest.post(baseUrl)
|
|
||||||
.header("appId", "800065")//NCC请购单接口
|
|
||||||
.header("apiCode", "8000650000")//NCC应用
|
|
||||||
.header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥
|
|
||||||
.header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥
|
|
||||||
.body(req)//表单内容
|
|
||||||
.timeout(30000)//超时,毫秒
|
|
||||||
.execute().body();
|
|
||||||
logger.info("======OA请购单传NCC响应参数:{}======",result);
|
|
||||||
if (StrUtil.isNotEmpty(result)){
|
|
||||||
JSONObject resultJson = JSONObject.parseObject(result);
|
|
||||||
Boolean flag = resultJson.getBoolean("flag");
|
|
||||||
//保存日志
|
|
||||||
IntegrationTaskLivingDetailsEntity taskLivingDetail = new IntegrationTaskLivingDetailsEntity();
|
|
||||||
Date now = new Date();
|
|
||||||
taskLivingDetail.setCreate_time(now);
|
|
||||||
taskLivingDetail.setModify_time(now);
|
|
||||||
taskLivingDetail.setRootAppPk(formmainData.getString("id"));
|
|
||||||
taskLivingDetail.setRootAppBill(formmainData.getString("field0001"));
|
|
||||||
taskLivingDetail.setPluginId("RequisitionOrderPlugin");
|
|
||||||
taskLivingDetail.setRootAppNewData(req);
|
|
||||||
taskLivingDetail.setNewTransmitInfo(result);
|
|
||||||
taskLivingDetail.setNewPushDate(now);
|
|
||||||
saveLog(task_living_details_id,flag,taskLivingDetail);
|
|
||||||
//回写NCC单号到OA单据
|
|
||||||
JSONObject attribute = resultJson.getJSONObject("attribute");
|
|
||||||
if (null != attribute){
|
|
||||||
String code = attribute.getString("code");
|
|
||||||
if ("success".equals(code)){
|
|
||||||
JSONObject data = attribute.getJSONObject("data");
|
|
||||||
if (null != data){
|
|
||||||
JSONObject headVO = data.getJSONObject("headVO");
|
|
||||||
if (null != headVO){
|
|
||||||
String vbillcode = headVO.getString("code");
|
|
||||||
logger.info("======vbillcode======:{}",vbillcode);
|
|
||||||
RequisitionOrderEntity requisitionOrderEntity = new RequisitionOrderEntity();
|
|
||||||
requisitionOrderEntity.setField0059(vbillcode);
|
|
||||||
requisitionOrderEntity.setDataSourceCode(datasourceCode);
|
|
||||||
requisitionOrderEntity.setId(formmainData.getString("id"));
|
|
||||||
requisitionOrderService.updateOrder(requisitionOrderEntity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return BaseResult.getSuccessMessageEntity("请购单推NCC成功");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
@ -195,6 +266,10 @@ public class RequisitionOrderPluginServiceImpl implements IRequisitionOrderPlugi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
JSONObject headers =new JSONObject();
|
||||||
|
headers.put("creator","1001P1100000000NUULI");
|
||||||
|
RequisitionOrderPluginServiceImpl service = new RequisitionOrderPluginServiceImpl();
|
||||||
|
service.uploadFile("-333447786976688302",headers,"8000640003","1001A3100000001B4COB");
|
||||||
}
|
}
|
||||||
//保存日志
|
//保存日志
|
||||||
public void saveLog(String integration_task_living_details_id, Boolean flag, IntegrationTaskLivingDetailsEntity taskLivingDetail){
|
public void saveLog(String integration_task_living_details_id, Boolean flag, IntegrationTaskLivingDetailsEntity taskLivingDetail){
|
||||||
|
|
|
@ -2,5 +2,5 @@
|
||||||
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
|
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
|
||||||
<beans default-autowire="byName">
|
<beans default-autowire="byName">
|
||||||
<bean name="requisitionOrderPluginInitializer" class="com.hzya.frame.plugin.oa.praybill.plugin.RequisitionOrderPluginInitializer" />
|
<bean name="requisitionOrderPluginInitializer" class="com.hzya.frame.plugin.oa.praybill.plugin.RequisitionOrderPluginInitializer" />
|
||||||
<bean name="requisitionOrderPluginInitializer" class="com.hzya.frame.plugin.ncc.plugin.PoOrderPluginInitializer" />
|
<bean name="poOrderPluginInitializer" class="com.hzya.frame.plugin.ncc.plugin.PoOrderPluginInitializer" />
|
||||||
</beans>
|
</beans>
|
||||||
|
|
Loading…
Reference in New Issue