123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367 |
- package com.kingdee.eas.custom.gudoctor.server;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.bos.ContextUtils;
- import com.kingdee.bos.bsf.service.app.IHRMsfService;
- import com.kingdee.bos.bsf.service.classloader.MsfClassLoaderFactory;
- import com.kingdee.bos.ctrl.bizshare.ConnectException;
- import com.kingdee.bos.ctrl.kdf.data.impl.BOSQueryDelegate;
- import com.kingdee.bos.ctrl.print.common.provider.DefaultPrintDataProvider;
- import com.kingdee.bos.ctrl.report.forapp.kdnote.client.DefaultNoteDataProvider;
- import com.kingdee.bos.ctrl.report.forapp.kdnote.client.KDNoteHelper;
- import com.kingdee.bos.ctrl.report.forapp.kdnote.webserver.IContextProvider;
- import com.kingdee.bos.ctrl.report.forapp.kdnote.webserver.KDNoteWebServerHelper;
- import com.kingdee.bos.ctrl.reportone.kdrs.biz.IBizContext;
- import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
- import com.kingdee.bos.dao.query.IQueryExecutor;
- import com.kingdee.bos.dao.query.QueryExecutorFactory;
- import com.kingdee.bos.metadata.IMetaDataPK;
- import com.kingdee.bos.metadata.MetaDataPK;
- import com.kingdee.bos.util.EASResource;
- import com.kingdee.eas.basedata.assistant.AbstractPrintIntegrationInfo;
- import com.kingdee.eas.basedata.assistant.IPrintIntegration;
- import com.kingdee.eas.basedata.assistant.PrintIntegrationFactory;
- import com.kingdee.eas.basedata.assistant.util.CommonPrintIntegrationDataProvider;
- import com.kingdee.eas.basedata.assistant.util.MultiDataSourceDataProviderProxy;
- import com.kingdee.eas.basedata.assistant.util.PrintIntegrationManager;
- import com.kingdee.shr.base.syssetting.context.IContext;
- 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.util.SHRCheck;
- import com.kingdee.shr.base.syssetting.web.controller.ReportTemplateController;
- import com.kingdee.shr.component.report.CommonDataProvider;
- import com.kingdee.shr.component.report.ICommonDataProvider;
- import com.kingdee.shr.recuritment.InterviewPlanFactory;
- import com.kingdee.shr.recuritment.InterviewPlanInfo;
- import com.kingdee.util.Uuid;
- import org.apache.log4j.Logger;
- import org.springframework.ui.ModelMap;
- import org.springframework.validation.support.BindingAwareModelMap;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.io.*;
- import java.lang.reflect.Constructor;
- import java.net.URLDecoder;
- import java.net.URLEncoder;
- import java.text.MessageFormat;
- import java.util.*;
- import java.util.regex.Pattern;
- /**
- * @Description TODO
- * @Date 2024/11/5 16:34
- * @Created by 30489
- */
- public class GetJobRegistrationPackage implements IHRMsfService {
- private static final Logger logger = Logger.getLogger(GetJobRegistrationPackage.class);
- public static String PDF = "PDF";
- public static String NODE_SERVER = "shr_node_Server";
- @Override
- public Object process(Context context, Map<String, Object> param) {
- HashMap<String, Object> result = new HashMap<String, Object>();
- try {
- logger.error("GetJobRegistrationPackagebillID-----------------");
- String recordId = (String) param.get("recordId");
- //T_REC_InterviewPlan
- InterviewPlanInfo interviewPlanInfo = InterviewPlanFactory.getLocalInstance(context).getInterviewPlanInfo("where id ='" + recordId + "'");
- String billID = interviewPlanInfo.getInterview().toString();
- BindingAwareModelMap modelMap = new BindingAwareModelMap();
- param.put("dataProvider", "com.kingdee.shr.recuritment.util.InterviewResultPrintHelpDataProvider1");
- param.put("billID", billID);
- param.put("tdQueryPK", "");
- param.put("tdTemplateName", "/s-HR/Recuritment/InterviewResult");
- param.put("method", "report");
- param.put("tdRptTemplate", "RecRegisterTem.r1-print");
- param.put("tdTemplatePath", "%2Fs-HR%2FRecuritment%2FInterviewResult");
- param.put("uipk", "com.kingdee.shr.recuritment.interview");
- param.put("serviceId", "X8LdsTb7TCGpfR/aas8MGfI9KRA=");
- byte[] bytes = reportPackage(param, modelMap, context);
- String s = Base64.getEncoder().encodeToString(bytes);
- result.put("msg", s);
- result.put("msgType", "1");
- } catch (Exception e) {
- e.printStackTrace();
- result.put("msg", e.getMessage());
- result.put("msgType", "0");
- }
- return result;
- }
- public byte[] reportPackage(Map<String, Object> param, ModelMap modelMap, Context context) throws SHRWebException, ShrWebBizException {
- String tdTemplatePath = (String) param.get("tdTemplatePath");
- String tdRptTemplate = (String) param.get("tdRptTemplate");
- String templatePath = tdTemplatePath + "/" + tdRptTemplate;
- try {
- Object dataProvider = this.getDataProvider(param, modelMap, context);
- byte[] pdfs = exportPackage(param, modelMap, templatePath, dataProvider, "PDF", context);
- return pdfs;
- } catch (Exception var11) {
- var11.printStackTrace();
- throw new SHRWebException(var11);
- }
- }
- public Object getDataProvider(Map<String, Object> param, ModelMap modelMap, Context ctx) throws BOSException {
- Object data = null;
- String tdRptTemplate = (String) param.get("tdRptTemplate");
- String tdQueryPK = (String) param.get("tdQueryPK");
- List idList = new ArrayList();
- String isSelectedAllStr = (String) param.get("isSelectedAll");
- String queryUuidStr = (String) param.get("queryUuid");
- String billID = (String) param.get("billID");
- String dataProvider = (String) param.get("dataProvider");
- boolean isSelectedAll = isSelectedAllStr != null && isSelectedAllStr.equalsIgnoreCase("true");
- int i;
- if (isSelectedAll) {
- IQueryExecutor exec = QueryExecutorFactory.getLocalInstance(ctx, MetaDataPK.create(tdQueryPK));
- idList = exec.getBillIDList(Uuid.read(queryUuidStr), "id", 0, 0);
- } else {
- String[] billIDs = billID.split(",");
- String[] var15 = billIDs;
- int var16 = billIDs.length;
- for (i = 0; i < var16; ++i) {
- String s = var15[i];
- ((List) idList).add(s);
- }
- }
- IMetaDataPK tdQuery = null;
- if (tdQueryPK != null) {
- tdQuery = MetaDataPK.create(tdQueryPK);
- }
- if (!com.kingdee.util.StringUtils.isEmpty(dataProvider)) {
- if ("com.kingdee.bos.ctrl.print.common.provider.DefaultPrintDataProvider1".equals(dataProvider)) {
- data = new DefaultPrintDataProvider(ctx, (List) idList, tdQuery);
- } else if ("com.kingdee.bos.ctrl.report.forapp.kdnote.client.DefaultNoteDataProvider".equals(dataProvider)) {
- data = new DefaultNoteDataProvider(ctx, (List) idList, tdQuery);
- } else {
- try {
- Constructor<?>[] ctor = MsfClassLoaderFactory.forName(dataProvider).getDeclaredConstructors();
- logger.debug("-------start--------dataprovider is " + dataProvider);
- i = 0;
- for (int total = ctor.length; i < total; ++i) {
- Class[] cl = ctor[i].getParameterTypes();
- if (cl.length == 1) {
- data = MsfClassLoaderFactory.forName(dataProvider).getConstructor(cl).newInstance(billID);
- } else if (cl.length == 2) {
- data = MsfClassLoaderFactory.forName(dataProvider).getConstructor(cl).newInstance(billID, tdQueryPK);
- break;
- }
- }
- logger.debug("------end---------dataprovider is " + dataProvider);
- } catch (Exception var21) {
- logger.error(var21.getMessage(), var21);
- }
- if (data == null) {
- try {
- data = Class.forName(dataProvider).newInstance();
- } catch (Exception var20) {
- var20.printStackTrace();
- }
- }
- }
- } else {
- data = new DefaultNoteDataProvider(ctx, (List) idList, tdQuery);
- }
- if (null == data) {
- data = new CommonDataProvider((List) idList, tdQuery);
- }
- if (data instanceof ICommonDataProvider) {
- ((ICommonDataProvider) data).setContext(ctx);
- }
- data = this.printTimesControl(data, (List) idList, tdRptTemplate, ctx);
- return data;
- }
- public byte[] exportPackage(Map<String, Object> param, ModelMap modelMap, String templatePath, Object dataProvider, String type, Context context) throws IOException, SHRWebException {
- if (templatePath != null) {
- try {
- templatePath = URLDecoder.decode(templatePath, "UTF-8");
- } catch (UnsupportedEncodingException var15) {
- logger.error("decode url error when export. the url is :" + SHRCheck.vaildLog(templatePath));
- }
- logger.info("Note output PDF start..." + SHRCheck.vaildLog(templatePath));
- KDNoteWebServerHelper webServerHelper = new KDNoteWebServerHelper();
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- try {
- //out = response.getOutputStream();
- if (webServerHelper != null) {
- webServerHelper.setContextProvider(new IContextProvider() {
- @Override
- public IBizContext getBizContext(Context context1) {
- try {
- IBizContext ctx = KDNoteHelper.makeContext(context);
- return ctx;
- } catch (ConnectException e) {
- throw new RuntimeException(e);
- }
- }
- });
- webServerHelper.setBosContext(context);
- webServerHelper.exportPDF(templatePath, dataProvider, out);
- }
- //wKiDDCaiZyrsBbDblnsoeEtIrOcDCDXNad6mzSYvjFQZLSjJ7DNG-IiT3NrjmhFm RecRegisterPersonBaseQuery
- // String tempFilePath = "E:\\kdshr90\\eas\\server\\deploy\\easweb.ear\\shr_web.war\\tmp/wKiDDCaiZyrsBbDblnsoeEtIrOcDCDXNad6mzSYvjFQZLSjJ7DNG-IiT3NrjmhFm";
- //// HttpSession session = request.getSession();
- //// String tempFilePath = UserUtil.getUserTempDirAbsolutePath(session); //´æ·Å
- // File tempFile = new File(tempFilePath);
- // if (!tempFile.exists()) {
- // tempFile.mkdirs();
- // }
- // logger.error("GetJobRegistrationPackagetempFilePath-----------------" + tempFilePath);
- // File outFile = new File(tempFilePath + "/outA.pdf");
- // FileOutputStream fos = new FileOutputStream(outFile);
- // out.writeTo(fos);
- // fos.close();
- byte[] byteArray = out.toByteArray();
- return byteArray;
- } catch (Exception var14) {
- logger.error("export pdf error:", var14);
- } finally {
- if (out != null) {
- out.flush();
- out.close();
- }
- }
- }
- return null;
- }
- public static IBizContext getBizContext(Context context) throws ConnectException {
- IBizContext biaContext = KDNoteHelper.makeContext(context);
- //IBizContext biaContext = (IBizContext)SHRContext.getSessionContext().get(RPT_CTX);
- if (biaContext != null) {
- return biaContext;
- } else {
- try {
- KDNoteWebServerHelper nodeWeb = new KDNoteWebServerHelper();
- nodeWeb.setContextProvider(new IContextProvider() {
- public IBizContext getBizContext(Context bosCtx) {
- IBizContext ctx = (IBizContext) SHRContext.getSessionContext().get(ReportTemplateController.RPT_CTX);
- if (ctx != null) {
- return ctx;
- } else {
- try {
- ctx = KDNoteHelper.makeContext(SHRContext.getInstance().getContext());
- SHRContext.getSessionContext().put(ReportTemplateController.RPT_CTX, ctx);
- return ctx;
- } catch (ConnectException var4) {
- //ReportTemplateController.logger.error("get page data error!", var4);
- return null;
- }
- }
- }
- });
- SHRContext.getSessionContext().put(NODE_SERVER, nodeWeb);
- return nodeWeb.getThisBizContext();
- } catch (Exception var2) {
- logger.error("get page data error!", var2);
- return null;
- }
- }
- }
- private Object printTimesControl(Object data, List idList, String rptTemplate, Context context) throws BOSException {
- MultiDataSourceDataProviderProxy multiDataProvider = new MultiDataSourceDataProviderProxy();
- StringBuffer failToPrintMsg = new StringBuffer();
- try {
- HashMap printAttributes = null;
- IBizContext bizContext = getBizContext(context);
- if (bizContext != null && bizContext.getBizContent() != null) {
- printAttributes = bizContext.getBizContent().getAttributes("/EAS_Note.kdrs/s-HR/AffairBiz/EmpEnroll/EmpEnrollBiz.r1-print", new String[]{"isselected", "prttimes"});
- }
- if (printAttributes != null && printAttributes.get("isselected") == null) {
- return data;
- } else {
- int curNum = 1;
- if (printAttributes != null) {
- boolean isTimesCtrl = Integer.parseInt(String.valueOf(printAttributes.get("isselected"))) == 1;
- if (!isTimesCtrl) {
- return data;
- }
- }
- ObjectUuidPK pk = new ObjectUuidPK(idList.get(0).toString());
- String bosType = pk.getObjectType().toString();
- IPrintIntegration pinfo = PrintIntegrationFactory.getRemoteInstance();
- List infoList = pinfo.getBillsPrintInfoByList(idList, bosType);
- if (rptTemplate != null && rptTemplate.trim().length() > 0) {
- for (int i = 0; i < infoList.size(); ++i) {
- logger.info("start the print control!");
- int maxNum = 0;
- if (printAttributes != null && printAttributes.get("prttimes") != null) {
- maxNum = Integer.parseInt(String.valueOf(printAttributes.get("prttimes")));
- }
- int pnum = ((AbstractPrintIntegrationInfo) infoList.get(i)).getPrintedNumber();
- String billID1 = ((AbstractPrintIntegrationInfo) infoList.get(i)).getPrintBillID();
- logger.info("Max print number:>>" + maxNum);
- logger.info("Alreadey print number:>>" + pnum);
- logger.info("current print number:>>" + curNum);
- String billNumber;
- String msgInfo;
- Object[] objs;
- if (pnum >= maxNum) {
- idList.remove(billID1);
- billNumber = pinfo.getBillNumberByBosType(bosType, billID1);
- msgInfo = EASResource.getString("com.kingdee.eas.basedata.assistant.PrintIntegrationResource", "pi.controlinfo1");
- objs = new Object[]{billNumber, String.valueOf(curNum), String.valueOf(pnum), String.valueOf(maxNum)};
- failToPrintMsg.append(MessageFormat.format(msgInfo, objs) + "\n");
- HTML(failToPrintMsg.toString());
- } else if (curNum + pnum > maxNum) {
- idList.remove(billID1);
- billNumber = pinfo.getBillNumberByBosType(bosType, billID1);
- msgInfo = EASResource.getString("com.kingdee.eas.basedata.assistant.PrintIntegrationResource", "pi.controlinfo2");
- objs = new Object[]{billNumber, String.valueOf(curNum), String.valueOf(pnum), String.valueOf(maxNum)};
- failToPrintMsg.append(MessageFormat.format(msgInfo, objs) + "\n");
- HTML(failToPrintMsg.toString());
- }
- }
- }
- multiDataProvider.put("MainQuery", (BOSQueryDelegate) data);
- CommonPrintIntegrationDataProvider printQueryData = new CommonPrintIntegrationDataProvider(bosType.toString(), PrintIntegrationManager.getPrintQueryPK());
- multiDataProvider.put("PrintQuery", printQueryData);
- PrintIntegrationManager.initPrint((KDNoteWebServerHelper) SHRContext.getSessionContext().get(NODE_SERVER), pk.getObjectType(), idList, rptTemplate, "com.kingdee.eas.scm.common.SCMResource", true);
- return multiDataProvider;
- }
- } catch (Exception var21) {
- var21.printStackTrace();
- return data;
- }
- }
- public static void HTML(String message) throws ShrWebBizException {
- ServletResponse response = SHRContext.getInstance().getResponse();
- PrintWriter pw;
- try {
- pw = response.getWriter();
- } catch (IOException var4) {
- throw new ShrWebBizException("can't open the output stream!");
- }
- pw.write(message);
- pw.flush();
- pw.close();
- }
- }
|