diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/callback/service/impl/CallBackServiceImpl.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/callback/service/impl/CallBackServiceImpl.java index 1788ea54..9a479d0c 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/callback/service/impl/CallBackServiceImpl.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dingtalk/callback/service/impl/CallBackServiceImpl.java @@ -9,6 +9,8 @@ import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponse; import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody; import com.dingtalk.api.response.OapiV2UserGetResponse; import com.hzya.frame.plugin.lets.constant.OverallConstant; +import com.hzya.frame.plugin.lets.constant.ProfilesActiveConstant; +import com.hzya.frame.plugin.lets.dao.IArapDjzbDao; import com.hzya.frame.plugin.lets.dingtalk.callback.service.CallBackService; import com.hzya.frame.plugin.lets.dingtalk.dao.IDingU8cBillDao; import com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity; @@ -18,13 +20,16 @@ import com.hzya.frame.plugin.lets.dingtalk.utils.PushU8CFileUtil; import com.hzya.frame.plugin.lets.dingtalk.vo.DingCallbackCrypto; import com.hzya.frame.plugin.lets.dingtalk.vo.FileModuleVO; import com.hzya.frame.plugin.lets.dingtalk.vo.SysFileVO; +import com.hzya.frame.plugin.lets.entity.ArapDjzbEntity; import com.hzya.frame.plugin.lets.entity.BdCorpEntity; import com.hzya.frame.plugin.lets.entity.BdDeptdocEntity; import com.hzya.frame.plugin.lets.u8cdto.*; import com.hzya.frame.plugin.lets.util.QueryU8CEntityUtil; +import com.hzya.frame.plugin.lets.util.SaveOrUpdateBusinessLogUtil; import com.hzya.frame.plugin.lets.util.pushData.Attribute; import com.hzya.frame.plugin.lets.util.pushData.PushU8CByApiCode; import com.hzya.frame.plugin.lets.util.pushData.ZTResult; +import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.RequestEntity; @@ -42,24 +47,7 @@ import java.util.*; import java.util.stream.Collectors; /** - * 回调:审批通过的(U):记录: - * push_info:success - * ding_talk_process_id - * modify_time:new Date() - * ding_res: - * approve:Y - * initiate:U - * 回调:审批通过的(D):记录: - * 全记录 - * initiate:D - *
- * 回调:审批失败的(U):记录:
- * push_info:success
- * ding_talk_process_id
- * modify_time:new Date()
- * ding_res:
- * approve:Y
- * initiate:U
+ * 钉钉回调,push_status一定是Y
*/
@Service("callBackService")
public class CallBackServiceImpl implements CallBackService {
@@ -69,6 +57,8 @@ public class CallBackServiceImpl implements CallBackService {
@Autowired
private IDingU8cBillDao dingU8cBillDao;
+ @Autowired
+ private SaveOrUpdateBusinessLogUtil saveOrUpdateBusinessLogUtil;
@Value("${DING.CorpId}")
private String CorpId;
@@ -105,7 +95,7 @@ public class CallBackServiceImpl implements CallBackService {
String eventType = eventJson.getString("EventType");
- //防止钉钉回调
+ //防止钉钉重复回调
if(eventJson.getString("processInstanceId")!=null) {
if (!eventJson.getString("processInstanceId").equals(dingId)) {
dingId = eventJson.getString("processInstanceId");
@@ -172,8 +162,29 @@ public class CallBackServiceImpl implements CallBackService {
String processInstanceId = eventJson.getString("processInstanceId");
DingU8cBillEntity dingU8cBillEntity = queryU8CDing(processInstanceId);
if (dingU8cBillEntity == null) {
- Assert.state(false, "代理采购(付款单)->采购付款申请(店群专用)回调:未查询到相关审批实例,实例id:{}", processInstanceId);
+ Assert.state(false, "委外采购(付款单)->采购付款申请(新)回调:未查询到相关审批实例,实例id:{}", processInstanceId);
}
+
+ if("Y".equals(dingU8cBillEntity.getApprove())){
+ return;
+ }
+
+ //查询u8c单据信息
+ ArapDjzbEntity arapDjzbEntity = queryArapDjzbEntity(dingU8cBillEntity.getU8c_pk_corp(), dingU8cBillEntity.getU8c_bill_code());
+ if(arapDjzbEntity==null){
+ Assert.state(false,"根据公司编码:{},单据号:{},未查询到U8C付款单。",dingU8cBillEntity.getU8c_code_corp(),dingU8cBillEntity.getU8c_bill_code());
+ }
+
+ //djzt单据状态 1保存 3完成
+ if("3".equals(arapDjzbEntity.getDjzt())){
+ return;
+ }
+
+ //spzt审批状态 null未审批 1审批
+ if("1".equals(arapDjzbEntity.getSpzt())){
+ return;
+ }
+
//查询实例的具体信息
GetProcessInstanceResponse processInstanceDetails = DingTalkUtils.getProcessInstanceDetails(token, processInstanceId);
GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult processInstanceResponseBodyResult = processInstanceDetails.getBody().getResult();
@@ -189,7 +200,7 @@ public class CallBackServiceImpl implements CallBackService {
String status = null;//审批状态。RUNNING:审批中 TERMINATED:已撤销 COMPLETED:审批完成
String result = null;//审批结果。agree:同意 refuse:拒绝
String userId = null;//任务处理人。
- String mobile = null;//处理人手机号
+// String mobile = null;//处理人手机号
status = processInstanceResponseBodyResult.getStatus();
if ("RUNNING".equals(status) || "TERMINATED".equals(status)) {
@@ -202,22 +213,35 @@ public class CallBackServiceImpl implements CallBackService {
for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks task : tasks) {
userId=task.getUserId();
}
- mobile = getMobileByUserId(token, userId);
+// mobile = getMobileByUserId(token, userId);
result = processInstanceResponseBodyResult.getResult();
if ("agree".equals(result)) {
//同意
//审批u8c单据
- approveArapDjzb(dingU8cBillEntity,mobile);
+ approveArapDjzb(dingU8cBillEntity);
}else if ("refuse".equals(result)) {
//拒绝
dingU8cBillEntity.setApprove("N");
dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity);
//后续林姐姐给接口,拒绝之后清空process_id、approve:N
- refuse(dingU8cBillEntity, mobile);
+ refuse(dingU8cBillEntity);
}
} catch (Exception e) {
- logger.error("代理采购(付款单)->采购付款申请(店群专用)回调报错:" + e);
+ logger.error("回调报错:" + e);
+ LocalDate now = LocalDate.now();
+
+ //做一个钉钉的日志
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N);
+ integrationTaskLivingDetailsEntity.setRootAppNewData("委外采购(付款单)->采购付款申请(新)回调报错");
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(e.getMessage());
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(now.toString());
+ integrationTaskLivingDetailsEntity.setRootAppPk(eventJson.getString("processInstanceId"));
+ integrationTaskLivingDetailsEntity.setRootAppBill(eventJson.getString("processInstanceId"));
+ integrationTaskLivingDetailsEntity.setPluginId("dingtalk.DingCallBackServicePluginInitializer");
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
}
}
@@ -236,6 +260,28 @@ public class CallBackServiceImpl implements CallBackService {
if (dingU8cBillEntity == null) {
Assert.state(false, "代理采购(付款单)->采购付款申请(店群专用)回调:未查询到相关审批实例,实例id:{}", processInstanceId);
}
+
+
+ if("Y".equals(dingU8cBillEntity.getApprove())){
+ return;
+ }
+
+ //查询u8c单据信息
+ ArapDjzbEntity arapDjzbEntity = queryArapDjzbEntity(dingU8cBillEntity.getU8c_pk_corp(), dingU8cBillEntity.getU8c_bill_code());
+ if(arapDjzbEntity==null){
+ Assert.state(false,"根据公司编码:{},单据号:{},未查询到U8C付款单。",dingU8cBillEntity.getU8c_code_corp(),dingU8cBillEntity.getU8c_bill_code());
+ }
+
+ //djzt单据状态 1保存 3完成
+ if("3".equals(arapDjzbEntity.getDjzt())){
+ return;
+ }
+
+ //spzt审批状态 null未审批 1审批
+ if("1".equals(arapDjzbEntity.getSpzt())){
+ return;
+ }
+
//查询实例的具体信息
GetProcessInstanceResponse processInstanceDetails = DingTalkUtils.getProcessInstanceDetails(token, processInstanceId);
GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult processInstanceResponseBodyResult = processInstanceDetails.getBody().getResult();
@@ -251,7 +297,7 @@ public class CallBackServiceImpl implements CallBackService {
String status = null;//审批状态。RUNNING:审批中 TERMINATED:已撤销 COMPLETED:审批完成
String result = null;//审批结果。agree:同意 refuse:拒绝
String userId = null;//任务处理人。
- String mobile = null;//处理人手机号
+// String mobile = null;//处理人手机号
status = processInstanceResponseBodyResult.getStatus();
if ("RUNNING".equals(status) || "TERMINATED".equals(status)) {
@@ -264,22 +310,36 @@ public class CallBackServiceImpl implements CallBackService {
for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks task : tasks) {
userId=task.getUserId();
}
- mobile = getMobileByUserId(token, userId);
+// mobile = getMobileByUserId(token, userId);
result = processInstanceResponseBodyResult.getResult();
if ("agree".equals(result)) {
//同意
//审批u8c单据
- approveArapDjzb(dingU8cBillEntity,mobile);
+ approveArapDjzb(dingU8cBillEntity);
}else if ("refuse".equals(result)) {
//拒绝
dingU8cBillEntity.setApprove("N");
dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity);
//后续林姐姐给接口,拒绝之后清空process_id、approve:N
- refuse(dingU8cBillEntity, mobile);
+ refuse(dingU8cBillEntity);
}
} catch (Exception e) {
- logger.error("代理采购(付款单)->采购付款申请(店群专用)回调报错:" + e);
+ logger.error("回调报错:" + e);
+ LocalDate now = LocalDate.now();
+
+ //做一个钉钉的日志
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N);
+ integrationTaskLivingDetailsEntity.setRootAppNewData("代理采购(付款单)->采购付款申请(店群专用)回调报错");
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(e.getMessage());
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(now.toString());
+ integrationTaskLivingDetailsEntity.setRootAppPk(eventJson.getString("processInstanceId"));
+ integrationTaskLivingDetailsEntity.setRootAppBill(eventJson.getString("processInstanceId"));
+ integrationTaskLivingDetailsEntity.setPluginId("dingtalk.DingCallBackServicePluginInitializer");
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+
}
}
@@ -316,6 +376,29 @@ public class CallBackServiceImpl implements CallBackService {
//新增u8c付款单、保存日志、上传附件
addArapBill(processInstanceId, token);
} else {
+
+ if("Y".equals(dingU8cBillEntity.getApprove())){
+ return;
+ }
+
+ //查询u8c单据信息
+ ArapDjzbEntity arapDjzbEntity = queryArapDjzbEntity(dingU8cBillEntity.getU8c_pk_corp(), dingU8cBillEntity.getU8c_bill_code());
+ if(arapDjzbEntity==null){
+ Assert.state(false,"根据公司编码:{},单据号:{},未查询到U8C付款单。",dingU8cBillEntity.getU8c_code_corp(),dingU8cBillEntity.getU8c_bill_code());
+ }
+
+ //djzt单据状态 1保存 3完成
+ if("3".equals(arapDjzbEntity.getDjzt())){
+ return;
+ }
+
+ //spzt审批状态 null未审批 1审批
+ if("1".equals(arapDjzbEntity.getSpzt())){
+ return;
+ }
+
+
+
//查询实例的具体信息
GetProcessInstanceResponse processInstanceDetails = DingTalkUtils.getProcessInstanceDetails(token, processInstanceId);
GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResult processInstanceResponseBodyResult = processInstanceDetails.getBody().getResult();
@@ -337,7 +420,7 @@ public class CallBackServiceImpl implements CallBackService {
String status = null;//审批状态。RUNNING:审批中 TERMINATED:已撤销 COMPLETED:审批完成
String result = null;//审批结果。agree:同意 refuse:拒绝
String userId = null;//任务处理人。
- String mobile = null;//处理人手机号
+// String mobile = null;//处理人手机号
status = processInstanceResponseBodyResult.getStatus();
if ("RUNNING".equals(status) || "TERMINATED".equals(status)) {
@@ -350,24 +433,38 @@ public class CallBackServiceImpl implements CallBackService {
for (GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultTasks task : tasks) {
userId=task.getUserId();
}
- mobile = getMobileByUserId(token, userId);
+// mobile = getMobileByUserId(token, userId);
result = processInstanceResponseBodyResult.getResult();
if ("agree".equals(result)) {
//同意
//审批u8c单据
- approveArapDjzb(dingU8cBillEntity,mobile);
+ approveArapDjzb(dingU8cBillEntity);
}else if ("refuse".equals(result)) {
//拒绝
dingU8cBillEntity.setApprove("N");
dingU8cBillDao.callBackSaveOrUpdate(dingU8cBillEntity);
//后续林姐姐给接口,拒绝之后清空process_id、approve:N
- refuse(dingU8cBillEntity, mobile);
+ refuse(dingU8cBillEntity);
}
}
} catch (Exception e) {
- logger.error("调拨单内部交易(付款单)->特殊业务处理(新)回调报错:" + e);
+ logger.error("回调报错:" + e);
+ LocalDate now = LocalDate.now();
+
+ //做一个钉钉的日志
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N);
+ integrationTaskLivingDetailsEntity.setRootAppNewData("调拨单内部交易(付款单)->特殊业务处理(新)回调报错");
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(e.getMessage());
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(now.toString());
+ integrationTaskLivingDetailsEntity.setRootAppPk(eventJson.getString("processInstanceId"));
+ integrationTaskLivingDetailsEntity.setRootAppBill(eventJson.getString("processInstanceId"));
+ integrationTaskLivingDetailsEntity.setPluginId("dingtalk.DingCallBackServicePluginInitializer");
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+
}
}
@@ -377,7 +474,7 @@ public class CallBackServiceImpl implements CallBackService {
/**
* 审核付款单,并保存日志
*/
- public void approveArapDjzb(DingU8cBillEntity dingU8cBillEntity,String mobile) throws Exception {
+ public void approveArapDjzb(DingU8cBillEntity dingU8cBillEntity) throws Exception {
//获取当前时间
LocalDate now = LocalDate.now();
@@ -385,8 +482,8 @@ public class CallBackServiceImpl implements CallBackService {
bills.put("djbh", dingU8cBillEntity.getU8c_bill_code());
bills.put("dwbm", dingU8cBillEntity.getU8c_code_corp());
bills.put("opinion", "同意");
-// bills.put("operatorid", OverallConstant.getOverAllValue("u8cApiZdrCode"));
- bills.put("operatorid", mobile);
+ bills.put("operatorid", OverallConstant.getOverAllValue("u8cApiZdrCode"));
+// bills.put("operatorid", mobile);
bills.put("operatedate", now.toString());
String jsonStr = JSONUtil.toJsonStr(bills);
jsonStr = "{\"bills\":[" + jsonStr + "]}";
@@ -614,7 +711,7 @@ public class CallBackServiceImpl implements CallBackService {
/**
* 钉钉拒绝审批,http请求
*/
- public void refuse(DingU8cBillEntity dingU8cBillEntity, String mobile) throws IOException {
+ public void refuse(DingU8cBillEntity dingU8cBillEntity) throws IOException {
// 服务器访问地址及端口,例如 http://ip:port
String serviceUrl = OverallConstant.getOverAllValue("u8cApiUrl");
// 接口地址
@@ -630,7 +727,8 @@ public class CallBackServiceImpl implements CallBackService {
//请求体
Map