批复的特点
批复是上级机关答复下级机关请示事项的一种下行公文,也就是说,批复是与请示配合使用的下行文。先有下级的请示,才会有上级的批复,有请必复,一事一批。批复只有在上级机关答复下级机关的请示时才能使用。上级机关答复同级或不隶属机关的询问,则只能用函,不能用批复。
批复具有被动性、针对性、权威性、简明性等特点。批复的意见具有指令作用,下级机关必须遵照执行。批复的类型总体分为批示性批复和批准性批复两类。
批复包含标准党政机关公文格式要素,主体格式主要包括标题、主送机关、正文、发文机关署名和成文日期等。
显示效果
示例代码所生成的OFD文件:下载
示例代码
package test.create.c12;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.bouncycastle.asn1.ASN1BitString;
import org.bouncycastle.asn1.DERBitString;
import iofd.layout.signature.SignatureRequest;
import iofd.official.OfficialDocument;
import iofd.official.gbt9704.bean.SealInfo;
import iofd.official.gbt9704.contants.OfficialDocumentType;
import iofd.pki.core.asn1.SM2Signature;
import iofd.pki.core.sm2.Sm2Signer;
import iofd.signature.OfdSignatureHelper;
import iofd.signature.OfdSignatureHelper.DigestInfo;
import iofd.signature.asn1.seal.SeSeal;
import test.create.TestDocUtil;
import test.create.c11.C1101SealHelloWorld;
/**
* 公文:批复
* */
public class C1212PiFu {
public static void main(String[] args) throws Throwable {
C1212PiFu o = new C1212PiFu();
o.done();
}
private void done() throws Throwable {
String clzName = this.getClass().getSimpleName();
System.out.println(clzName + " begin");
OfficialDocument official = new OfficialDocument(OfficialDocumentType.PI_FU);
official.setIssuerAgency("测试符路桥区卫生局文件");
official.setIssueNum("路卫发〔2011〕76号");
official.setTitles("关于同意张阿三同志辞职的批复");
List mainSend = new ArrayList<>();
mainSend.add("区中医院");
official.setMainSend(mainSend);
official.addContent("你院《关于给张阿三同志辞职的请示》(路中医发〔2011〕10号)收悉。");
official.addContent("张阿三,男,1978年2月出生,籍贯江西新建,2001年9月参加工作,本科学历,主治医师,系区中医院职工。");
official.addContent("该同志由于家庭、籍贯等原因,从2006年1月至今未到单位上班,期间院方曾多次与其联系,均被拒绝回院。2011年3月1日该同志向医院递交辞职报告,鉴于本人实际情况,根据《浙江省专业技术人员和管理人员辞职暂行办法》(浙人才〔1993〕73号)文件精神,经研究,同意张阿三同志辞职。");
List sealList = new ArrayList<>();
SealInfo info = new SealInfo();
info.setName("测试符路桥区卫生局办公室");
info.setDate("2011年3月10日");
info.setSeal(C1101SealHelloWorld.SEAL1);
sealList.add(info);
official.setSeals(sealList);
official.setPrintOrg("测试符路桥区卫生局办公室");
official.setPrintDate("2011年3月10日");
String digestFileName = TestDocUtil.getOfdFilePath(this.getClass(), "_digest", false);
String finalFileName = TestDocUtil.getOfdFilePath(this.getClass(), false);
official.save(finalFileName);
List signReqList = official.getSignatureRequestList();
for(int i = 0; signReqList != null && i < signReqList.size(); i++) {
File ofdFile = new File(finalFileName);
File digestFile = new File(digestFileName);
File finalFile = new File(finalFileName);
SignatureRequest req = signReqList.get(i);
SeSeal seSeal = req.getSeal();
OfdSignatureHelper helper = OfdSignatureHelper.newInstance();
DigestInfo digestInfo = helper.createSm3Digest(ofdFile, digestFile, C1101SealHelloWorld.pubKey, seSeal, req.getBoundary(), req.getClip(), req.getPageRef());
byte[] digest = digestInfo.getDigest();
/*
* 注意:这部分应该使用可靠的签名设备
* */
Sm2Signer signer = new Sm2Signer();
SM2Signature sign = signer.signWithHash(C1101SealHelloWorld.priKey, digest);
byte[] signature = sign.getEncoded();
int signVersion = 1;
ASN1BitString dataHash = new DERBitString(digest);
ASN1BitString timeInfo = null;//时间戳
helper.createSm2Signature(digestInfo.getSignatureRoot(), signature, seSeal, C1101SealHelloWorld.pubKey,
C1101SealHelloWorld.cert, signVersion, dataHash, timeInfo, digestFile, finalFile);
}
System.out.println(clzName + " end");
}
}