采购订单
This commit is contained in:
parent
b2bf806bb7
commit
7a749fc323
|
@ -0,0 +1,107 @@
|
|||
package com.hzya.frame.plugin.oa.poorder.plugin;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.hzya.frame.base.PluginBaseEntity;
|
||||
import com.hzya.frame.plugin.oa.poorder.service.IPoOrderService;
|
||||
import com.hzya.frame.web.entity.BaseResult;
|
||||
import com.hzya.frame.web.entity.JsonResultEntity;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
/**
|
||||
* @Description OA采购订单审批事件, 把审批结果传到NCC
|
||||
* @Author xiangerlin
|
||||
* @Date 2025/6/15 13:25
|
||||
**/
|
||||
public class PoOrderApprovalEventPluginInitializer extends PluginBaseEntity {
|
||||
Logger logger = LoggerFactory.getLogger(PoOrderApprovalEventPluginInitializer.class);
|
||||
@Autowired
|
||||
private IPoOrderService poOrderService;
|
||||
/***
|
||||
* 插件初始化方法
|
||||
* @Author 👻👻👻👻👻👻👻👻 gjh
|
||||
* @Date 2023-08-02 10:48
|
||||
* @Param []
|
||||
* @return void
|
||||
**/
|
||||
@Override
|
||||
public void initialize() {
|
||||
logger.info(getPluginLabel() + "執行初始化方法initialize()");
|
||||
}
|
||||
|
||||
/****
|
||||
* 插件销毁方法
|
||||
* @author 👻👻👻👻👻👻👻👻 gjh
|
||||
* @date 2023-08-02 10:48
|
||||
* @return void
|
||||
**/
|
||||
@Override
|
||||
public void destroy() {
|
||||
logger.info(getPluginLabel() + "執行銷毀方法destroy()");
|
||||
}
|
||||
|
||||
/****
|
||||
* 插件的ID
|
||||
* @author 👻👻👻👻👻👻👻👻 gjh
|
||||
* @date 2023-08-02 10:48
|
||||
* @return void
|
||||
**/
|
||||
@Override
|
||||
public String getPluginId() {
|
||||
return "PoOrderApprovalEventPlugin";
|
||||
}
|
||||
|
||||
/****
|
||||
* 插件的名称
|
||||
* @author 👻👻👻👻👻👻👻👻 gjh
|
||||
* @date 2023-08-02 10:48
|
||||
* @return void
|
||||
**/
|
||||
@Override
|
||||
public String getPluginName() {
|
||||
return "OA采购订单审批事件插件";
|
||||
}
|
||||
|
||||
/****
|
||||
* 插件的显示值
|
||||
* @author 👻👻👻👻👻👻👻👻 gjh
|
||||
* @date 2023-08-02 10:48
|
||||
* @return void
|
||||
**/
|
||||
@Override
|
||||
public String getPluginLabel() {
|
||||
return "OA采购订单审批事件插件";
|
||||
}
|
||||
|
||||
/***
|
||||
* 插件类型 1、场景插件
|
||||
* @Author 👻👻👻👻👻👻👻👻 gjh
|
||||
* @Date 2023-08-02 14:01
|
||||
* @Param []
|
||||
* @return java.lang.String
|
||||
**/
|
||||
@Override
|
||||
public String getPluginType() {
|
||||
return "1";
|
||||
}
|
||||
|
||||
/***
|
||||
* 执行业务代码
|
||||
* @Author 👻👻👻👻👻👻👻👻 gjh
|
||||
* @Date 2023-08-07 11:20
|
||||
* @param requestJson 执行业务代码的参数
|
||||
* @return void
|
||||
**/
|
||||
@Override
|
||||
public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
|
||||
logger.info("======OA采购订单审批事件插件传NCC插件======{}",JSONObject.toJSONString(requestJson));
|
||||
try {
|
||||
poOrderService.approvedEvent(requestJson);
|
||||
}catch (Exception e){
|
||||
logger.info("======OA采购订单审批事件插件传NCC插件======{}",e.getMessage());
|
||||
return BaseResult.getFailureMessageEntity("OA采购订单审批事件插件执行失败",e.getMessage());
|
||||
}
|
||||
return BaseResult.getSuccessMessageEntity("OA采购订单审批事件插件执行成功");
|
||||
}
|
||||
}
|
|
@ -17,4 +17,11 @@ public interface IPoOrderService {
|
|||
* @return
|
||||
*/
|
||||
JsonResultEntity buildOAParam(JSONObject reqJson);
|
||||
|
||||
/**
|
||||
* OA审批事件
|
||||
* @param reqJson
|
||||
* @return
|
||||
*/
|
||||
JsonResultEntity approvedEvent(JSONObject reqJson)throws Exception;
|
||||
}
|
||||
|
|
|
@ -3,16 +3,13 @@ package com.hzya.frame.plugin.oa.poorder.service.impl;
|
|||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.TypeReference;
|
||||
import com.alibaba.fastjson.serializer.SerializeConfig;
|
||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
|
||||
import com.hzya.frame.plugin.oa.poorder.service.IPoOrderService;
|
||||
import com.hzya.frame.seeyon.enums.ColEventTypeEnum;
|
||||
import com.hzya.frame.seeyon.org.member.entity.UserViewEntity;
|
||||
import com.hzya.frame.seeyon.org.member.service.IUserViewService;
|
||||
import com.hzya.frame.seeyon.util.OARestUtil;
|
||||
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
|
||||
import com.hzya.frame.web.entity.BaseResult;
|
||||
import com.hzya.frame.web.entity.JsonResultEntity;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -20,11 +17,8 @@ import org.slf4j.LoggerFactory;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description 接收NCC采购订单的请求
|
||||
|
@ -36,9 +30,12 @@ public class PoOrderServiceImpl implements IPoOrderService {
|
|||
Logger logger = LoggerFactory.getLogger(PoOrderServiceImpl.class);
|
||||
@Autowired
|
||||
private OARestUtil oaRestUtil;
|
||||
|
||||
@Autowired
|
||||
private IUserViewService userViewService;
|
||||
@Value("${zt.url}")
|
||||
private String interfaceUrl;
|
||||
@Value("${oa.po_order_template_code:}")
|
||||
private String templateCode;
|
||||
/**
|
||||
* 接收NCC的请求,并转换成OA的参数
|
||||
*
|
||||
|
@ -55,28 +52,33 @@ public class PoOrderServiceImpl implements IPoOrderService {
|
|||
JSONArray detailList = nccObj.getJSONArray("body");
|
||||
Assert.notNull(head,"参数不能为空");
|
||||
Assert.notNull(detailList,"参数不能为空");
|
||||
head.put("user_code","seeyon");
|
||||
UserViewEntity userView = new UserViewEntity();
|
||||
userView.setStaffNumber(head.getString("user_code"));
|
||||
userView.setDataSourceCode("JH-OA");
|
||||
UserViewEntity userViewEntity = userViewService.queryByStaffNumber(userView);
|
||||
//组装参数
|
||||
JSONObject formmain_0256 = new JSONObject();//主表数据
|
||||
List<JSONObject> formson_0257_list = new LinkedList<>();//子表数据
|
||||
formmain_0256.put("采购组织",head.getString("org_name"));
|
||||
formmain_0256.put("订单编号",head.getString("vbillcode"));
|
||||
formmain_0256.put("采购组织名称",head.getString("org_name"));
|
||||
formmain_0256.put("订单日期",head.getString("dbilldate"));
|
||||
formmain_0256.put("供应商",head.getString("sup_name"));
|
||||
formmain_0256.put("采购员",head.getString("cemployeename"));
|
||||
formmain_0256.put("采购员姓名",head.getString("cemployeename"));
|
||||
formmain_0256.put("供应商名称",head.getString("sup_name"));
|
||||
formmain_0256.put("开票供应商",head.getString("invc_sup_name"));
|
||||
formmain_0256.put("付款协议",head.getString("payterm_name"));
|
||||
formmain_0256.put("单据状态",head.getString("forderstatus"));
|
||||
formmain_0256.put("备注",head.getString("vmemo"));
|
||||
formmain_0256.put("补货",head.getString("bisreplenish"));
|
||||
formmain_0256.put("退货",head.getString("breturn"));
|
||||
formmain_0256.put("补货",booleanToStr(head.getString("bisreplenish")));
|
||||
formmain_0256.put("退货",booleanToStr(head.getString("breturn")));
|
||||
formmain_0256.put("总数量",head.getString("ntotalastnum"));
|
||||
formmain_0256.put("总价税合计",head.getString("ntotalorigmny"));
|
||||
formmain_0256.put("币种",head.getString("currtype_name"));
|
||||
formmain_0256.put("退货退库基于原订单补货",head.getString("brefwhenreturn"));
|
||||
formmain_0256.put("最终关闭",head.getString("bfinalclose"));
|
||||
formmain_0256.put("退货退库基于原订单补货",booleanToStr(head.getString("brefwhenreturn")));
|
||||
formmain_0256.put("最终关闭",booleanToStr(head.getString("bfinalclose")));
|
||||
formmain_0256.put("采购部门",head.getString("dept_name"));
|
||||
formmain_0256.put("订单类型",head.getString("BILLTYPENAME"));
|
||||
formmain_0256.put("订单类型",head.getString("billtypename"));
|
||||
formmain_0256.put("NCC采购订单编号",head.getString("vbillcode"));
|
||||
formmain_0256.put("NCC采购订单PK",head.getString("pk_order"));
|
||||
//子表
|
||||
for (int i=0; i < detailList.size(); i++){
|
||||
JSONObject detail = (JSONObject) detailList.get(i);
|
||||
|
@ -85,20 +87,24 @@ public class PoOrderServiceImpl implements IPoOrderService {
|
|||
formson_0257.put("行号",detail.getString("crowno"));
|
||||
formson_0257.put("物料编码",detail.getString("material_code"));
|
||||
formson_0257.put("物料名称",detail.getString("material_name"));
|
||||
formson_0257.put("规格",detail.getString("materialspec"));
|
||||
formson_0257.put("型号",detail.getString("materialtype"));
|
||||
formson_0257.put("单位",detail.getString("cunitname"));
|
||||
formson_0257.put("数量",detail.getString("nnum"));
|
||||
formson_0257.put("换算率",detail.getString("vchangerate"));
|
||||
formson_0257.put("无税单价",detail.getString("nqtorigprice"));
|
||||
formson_0257.put("含税单价",detail.getString("nqtorigtaxprice"));
|
||||
formson_0257.put("价税合计",detail.getString("norigtaxmny"));
|
||||
formson_0257.put("集团本币无税金额",detail.getString("norigmny"));
|
||||
formson_0257.put("集团本币价税合计",detail.getString("norigtaxmny"));
|
||||
formson_0257.put("计划收货日期",detail.getString("dplanarrvdate"));
|
||||
formson_0257.put("收货仓库",detail.getString("recvstordoc_name"));
|
||||
formson_0257.put("税率",detail.getString("ntaxrate"));
|
||||
formson_0257.put("NCC采购订单表体PK",detail.getString("pk_order_b"));
|
||||
formson_0257_list.add(formson_0257);
|
||||
}
|
||||
String param = oaRestUtil.processParamValueOf(formmain_0256, formson_0257_list, "formmain_0256_dev", "formmain_0256", "formson_0257");
|
||||
String token = oaRestUtil.getToken(head.getString("user_code"), "8000640001");
|
||||
String param = oaRestUtil.processParamValueOf(formmain_0256, formson_0257_list, templateCode, "formmain_0256", "formson_0257");
|
||||
String token = oaRestUtil.getToken(userViewEntity.getLoginName(), "8000640001");
|
||||
logger.info("NCC发起OA采购订单请求参数{}",param);
|
||||
//调用OA接口
|
||||
String result = HttpRequest.post(interfaceUrl)
|
||||
|
@ -108,8 +114,6 @@ public class PoOrderServiceImpl implements IPoOrderService {
|
|||
.header("publicKey","ZJYAAr9TeFduBYu7uJeie2KYdQsnBaEYZHmOjPWMMVZmzelCe7eDIk+3zDUT+v578prj")//NCC应用key
|
||||
.header("secretKey","f4SSnYcDQmdkwwuGJd2+934q6lM1NnUm5dmOw/4Wvy2mo6PgkKsI/drXYyyLWQCaj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//NCC应用密钥
|
||||
.body(param).execute().body();
|
||||
// JsonResultEntity resultEntity = (JsonResultEntity) oerDjmlService.handleOerDjml(paramJSON);
|
||||
// logger.info("保存GRPU8响应参数:{}",JSONObject.toJSON(resultEntity));
|
||||
logger.info("NCC发起OA采购订单响应参数:{}",result);
|
||||
JSONObject resultJson = JSONObject.parseObject(result);
|
||||
if (null == resultJson){
|
||||
|
@ -121,10 +125,85 @@ public class PoOrderServiceImpl implements IPoOrderService {
|
|||
return BaseResult.getSuccessMessageEntity(resultJson.getJSONObject("attribute"));
|
||||
}
|
||||
|
||||
private Object convertLowerCase(JSONObject jsonObject,String key){
|
||||
|
||||
/**
|
||||
* OA审批事件
|
||||
*
|
||||
* @param requestJson
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public JsonResultEntity approvedEvent(JSONObject requestJson)throws Exception {
|
||||
//数据源编码
|
||||
String datasourceCode = requestJson.getString("sourceCode");
|
||||
String task_living_details_id = requestJson.getString("integration_task_living_details_id");
|
||||
String headersStr = requestJson.getString("headers");//请求头
|
||||
String eventType = requestJson.getString("eventType");
|
||||
String summaryId = requestJson.getString("summaryId");
|
||||
JSONObject headers = requestJson.getJSONObject("headers");
|
||||
Assert.notEmpty(eventType,"eventType不能为空");
|
||||
Assert.notEmpty(headersStr,"headers不能为空");
|
||||
String formmainTableName = headers.getString("formmainTableName");
|
||||
JSONObject jsonStrObj = requestJson.getJSONObject("jsonStr");
|
||||
JSONObject businessData = jsonStrObj.getJSONObject("businessDataStr");
|
||||
JSONObject formmainData = businessData.getJSONObject(formmainTableName);
|
||||
if (null != formmainData){
|
||||
String pk_order = formmainData.getString("field0056");//采购订单pk
|
||||
String vbillcode = formmainData.getString("field0055");//采购订单code
|
||||
String userId = formmainData.getString("user_id");//审批人id
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("pk_order",pk_order);
|
||||
json.put("vbillcode",vbillcode);
|
||||
json.put("userId",userId);
|
||||
String params = json.toString();
|
||||
//组装参数,调用NCC审批接口
|
||||
logger.info("OA采购订单审批后传到NCC请购参数。:{},{}",eventType,params);
|
||||
String apiCode = "";
|
||||
if (ColEventTypeEnum.ONPROCESSFINISHED.getType().equals(eventType)){//审批完成
|
||||
apiCode = "8000650002";
|
||||
}else if (ColEventTypeEnum.ONSTOP.getType().equals(eventType) || ColEventTypeEnum.ONCANCEL.getType().equals(eventType)){//流程终止/撤销
|
||||
apiCode = "8000650003";
|
||||
}
|
||||
String result = HttpRequest.post(interfaceUrl)
|
||||
.header("appId", "800065")//NCC应用
|
||||
.header("apiCode", apiCode)//NCC采购订单审批接口
|
||||
.header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥
|
||||
.header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥
|
||||
.body(params)//表单内容
|
||||
.timeout(30000)//超时,毫秒
|
||||
.execute().body();
|
||||
logger.info("======OA采购单审批后传到NCC响应参数:{}======",result);
|
||||
JSONObject resultJson = JSONObject.parseObject(result);
|
||||
if (null == resultJson){
|
||||
return BaseResult.getFailureMessageEntity("审批NCC采购订单失败");
|
||||
}
|
||||
if (!resultJson.getBoolean("flag")){
|
||||
return BaseResult.getFailureMessageEntity("审批NCC采购订单失败"+resultJson.getString("msg"));
|
||||
}
|
||||
return BaseResult.getSuccessMessageEntity(resultJson.getJSONObject("attribute"));
|
||||
}
|
||||
return BaseResult.getSuccessMessageEntity("审批NCC采购订单");
|
||||
}
|
||||
|
||||
private Object convertLowerCase(JSONObject jsonObject, String key){
|
||||
if (null != jsonObject && StrUtil.isNotEmpty(key)){
|
||||
return null == jsonObject.get(key.toUpperCase()) ? jsonObject.get(key.toLowerCase()) : jsonObject.get(key.toUpperCase());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 把NCC的 boolean类型转成OA
|
||||
* NCC Y/N
|
||||
* OA 1/0
|
||||
* @param nccBoolean
|
||||
* @return
|
||||
*/
|
||||
private String booleanToStr(String nccBoolean){
|
||||
if ("Y".equals(nccBoolean)){
|
||||
return "1";
|
||||
}
|
||||
return "0";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue