package com.kingdee.eas.custom.esign.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.kingdee.bos.Context;
import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
import com.kingdee.bos.metadata.entity.SelectorItemCollection;
import com.kingdee.bos.metadata.entity.SelectorItemInfo;
import com.kingdee.eas.basedata.person.PersonInfo;
import com.kingdee.eas.custom.esign.ESignGlobalStatusOverviewFactory;
import com.kingdee.eas.custom.esign.ESignGlobalStatusOverviewInfo;
import com.kingdee.eas.custom.esign.IESignGlobalStatusOverview;
import com.kingdee.eas.custom.esign.bizEnum.SendStatusEnum;
import com.kingdee.eas.custom.esign.tsign.hz.comm.EsignHttpResponse;
import com.kingdee.eas.custom.esign.tsign.hz.exception.EsignException;
import com.kingdee.eas.custom.esign.util.EsignHttpUtil;
import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody;
import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader;
import com.kingdee.shr.base.syssetting.context.SHRContext;
import com.kingdee.shr.base.syssetting.exception.SHRWebException;
import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
import com.kingdee.shr.base.syssetting.web.handler.ListHandler;
import org.springframework.ui.ModelMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* description: ESignGlobalStatusOverviewHandler
* date: 21/11/2025 下午 4:19
* author: lhbj
* version: 1.0
*/
public class ESignGlobalStatusOverviewListHandler extends ListHandler {
public Context getCtx() {
return SHRContext.getInstance().getContext();
}
/**
* 基于文件发起签署
* @param request
* @param response
* @param modelMap
* @return
* @throws SHRWebException
*/
public String create_by_fileAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
String billId = this.getBillId(request);
int failure = 0;
int success = 0;
try {
if(billId.indexOf(",")>=0){
throw new EsignException("请选择一行记录发起签署");
}
IESignGlobalStatusOverview globalStatusOverview = ESignGlobalStatusOverviewFactory.getLocalInstance(this.getCtx());
SelectorItemCollection selectorItemCollection = new SelectorItemCollection();
selectorItemCollection.add(new SelectorItemInfo("*"));
selectorItemCollection.add(new SelectorItemInfo("person.id"));
selectorItemCollection.add(new SelectorItemInfo("operator.id"));
ESignGlobalStatusOverviewInfo info = globalStatusOverview.getESignGlobalStatusOverviewInfo(new ObjectUuidPK(billId));
PersonInfo person = info.getPerson();
PersonInfo operator = info.getOperator();
String personId=null;
if(null!=person&&null!=person.getId()){
personId=person.getId().toString();
}
String operatorId=null;
if(null!=operator&&null!=operator.getId()){
operatorId=operator.getId().toString();
}
EsignHttpResponse httpRes =EsignHttpUtil.create_by_file(this.getCtx(),personId,info.getFileName(),operatorId,info.getEfileId(),
info.getEsignStatus(),info.getRequestParams());
if(httpRes.getStatus()>=200&&httpRes.getStatus()<300) {
JSONObject object = JSON.parseObject(httpRes.getBody());
if("0".equals(String.valueOf(object.get("code")))) {
BatchMessageTipsBody body = new BatchMessageTipsBody();
body.setMuitTipsState(Boolean.TRUE);
body.setMuitTipsMessage(httpRes.getBody());
body.setId(billId);
batchMessageTipsHeader.addResult(body);
success++;
}else {
BatchMessageTipsBody body = new BatchMessageTipsBody();
body.setMuitTipsState(Boolean.FALSE);
body.setMuitTipsMessage(httpRes.getBody());
body.setId(billId);
batchMessageTipsHeader.addResult(body);
}
}else {
BatchMessageTipsBody body = new BatchMessageTipsBody();
body.setMuitTipsState(Boolean.FALSE);
body.setMuitTipsMessage(httpRes.getBody());
body.setId(billId);
batchMessageTipsHeader.addResult(body);
}
batchMessageTipsHeader.setBillId(billId);
batchMessageTipsHeader.setFailureCount((success>0?1:0));
batchMessageTipsHeader.setSuccessCount(success);
this.writeSuccessData(batchMessageTipsHeader);
}catch (EsignException e){
e.printStackTrace();
throw new ShrWebBizException(e);
}catch (Exception e){
e.printStackTrace();
throw new ShrWebBizException(e);
}
return null;
}
/**
* 撤销签署流程
* @param request
* @param response
* @param modelMap
* @return
* @throws SHRWebException
*/
public String revoke_by_fileAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
String billId = this.getBillId(request);
String revokeReason =request.getParameter("revokeReason");
int failure = 0;
int success = 0;
try {
if(billId.indexOf(",")>=0){
throw new EsignException("请选择一行记录发起签署");
}
IESignGlobalStatusOverview globalStatusOverview = ESignGlobalStatusOverviewFactory.getLocalInstance(this.getCtx());
SelectorItemCollection selectorItemCollection = new SelectorItemCollection();
selectorItemCollection.add(new SelectorItemInfo("*"));
selectorItemCollection.add(new SelectorItemInfo("person.id"));
selectorItemCollection.add(new SelectorItemInfo("operator.id"));
ESignGlobalStatusOverviewInfo info = globalStatusOverview.getESignGlobalStatusOverviewInfo(new ObjectUuidPK(billId));
PersonInfo person = info.getPerson();
PersonInfo operator = info.getOperator();
String personId=null;
if(null!=person&&null!=person.getId()){
personId=person.getId().toString();
}
String operatorId=null;
if(null!=operator&&null!=operator.getId()){
operatorId=operator.getId().toString();
}
EsignHttpResponse httpRes =EsignHttpUtil.revoke_by_file(this.getCtx(),info.getSignFlowId(),revokeReason,info.getEfileId());
if(httpRes.getStatus()>=200&&httpRes.getStatus()<300) {
JSONObject object = JSON.parseObject(httpRes.getBody());
if("0".equals(String.valueOf(object.get("code")))) {
BatchMessageTipsBody body = new BatchMessageTipsBody();
body.setMuitTipsState(Boolean.TRUE);
body.setMuitTipsMessage(httpRes.getBody());
body.setId(billId);
batchMessageTipsHeader.addResult(body);
success++;
}else {
BatchMessageTipsBody body = new BatchMessageTipsBody();
body.setMuitTipsState(Boolean.FALSE);
body.setMuitTipsMessage(httpRes.getBody());
body.setId(billId);
batchMessageTipsHeader.addResult(body);
}
}else {
BatchMessageTipsBody body = new BatchMessageTipsBody();
body.setMuitTipsState(Boolean.FALSE);
body.setMuitTipsMessage(httpRes.getBody());
body.setId(billId);
batchMessageTipsHeader.addResult(body);
}
batchMessageTipsHeader.setBillId(billId);
batchMessageTipsHeader.setFailureCount((success>0?1:0));
batchMessageTipsHeader.setSuccessCount(success);
this.writeSuccessData(batchMessageTipsHeader);
}catch (EsignException e){
e.printStackTrace();
throw new ShrWebBizException(e);
}catch (Exception e){
e.printStackTrace();
throw new ShrWebBizException(e);
}
return null;
}
/**
* 催签流程中签署人
* @param request
* @param response
* @param modelMap
* @return
* @throws SHRWebException
*/
public String urge_by_fileAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
String billId = this.getBillId(request);
int failure = 0;
int success = 0;
try {
if(billId.indexOf(",")>=0){
throw new EsignException("请选择一行记录发起签署");
}
IESignGlobalStatusOverview globalStatusOverview = ESignGlobalStatusOverviewFactory.getLocalInstance(this.getCtx());
SelectorItemCollection selectorItemCollection = new SelectorItemCollection();
selectorItemCollection.add(new SelectorItemInfo("*"));
selectorItemCollection.add(new SelectorItemInfo("person.id"));
selectorItemCollection.add(new SelectorItemInfo("person.id"));
ESignGlobalStatusOverviewInfo info = globalStatusOverview.getESignGlobalStatusOverviewInfo(new ObjectUuidPK(billId));
PersonInfo person = info.getPerson();
PersonInfo operator = info.getOperator();
String personId=null;
if(null!=person&&null!=person.getId()){
personId=person.getId().toString();
}
String operatorId=null;
if(null!=operator&&null!=operator.getId()){
operatorId=operator.getId().toString();
}
EsignHttpResponse httpRes =EsignHttpUtil.urge_by_file(this.getCtx(),info.getSignFlowId(),null,info.getEfileId());
if(httpRes.getStatus()>=200&&httpRes.getStatus()<300) {
JSONObject object = JSON.parseObject(httpRes.getBody());
if("0".equals(String.valueOf(object.get("code")))) {
BatchMessageTipsBody body = new BatchMessageTipsBody();
body.setMuitTipsState(Boolean.TRUE);
body.setMuitTipsMessage(httpRes.getBody());
body.setId(billId);
batchMessageTipsHeader.addResult(body);
success++;
}else {
BatchMessageTipsBody body = new BatchMessageTipsBody();
body.setMuitTipsState(Boolean.FALSE);
body.setMuitTipsMessage(httpRes.getBody());
body.setId(billId);
batchMessageTipsHeader.addResult(body);
}
}else {
BatchMessageTipsBody body = new BatchMessageTipsBody();
body.setMuitTipsState(Boolean.FALSE);
body.setMuitTipsMessage(httpRes.getBody());
body.setId(billId);
batchMessageTipsHeader.addResult(body);
}
batchMessageTipsHeader.setBillId(billId);
batchMessageTipsHeader.setFailureCount((success>0?1:0));
batchMessageTipsHeader.setSuccessCount(success);
this.writeSuccessData(batchMessageTipsHeader);
}catch (EsignException e){
e.printStackTrace();
throw new ShrWebBizException(e);
}catch (Exception e){
e.printStackTrace();
throw new ShrWebBizException(e);
}
return null;
}
}